#java
#java
Вопрос:
Хорошо, так что этот вопрос, вероятно, будет закрыт, но, черт возьми, сейчас 4:30 утра, и я не могу спать, потому что я все еще разочарован своим промежуточным экзаменом по Java прошлой ночью. Тест был онлайн, и вы сразу увидите, как вы справились.
Тест был плохо написан с множеством опечаток и грамматических ошибок. Обычно меня это не волнует, за исключением того, что, когда вы добавляете нечетко сформулированные вопросы, вы больше не уверены, как интерпретировать вопрос, поскольку вы не можете предположить, что можете разобрать его в соответствии с обычными правилами английского языка.
Один конкретный вопрос, который застрял у меня в горле:
Каков базовый тип для коллекций? (Это было написано так, с большой буквы C, что, я думаю, важно.)
Единственными релевантными возможностями были Object и Collections . Теперь я знаю, что Collections — это класс, из которого происходит большинство классов коллекций, поэтому я изначально выбрал его. Во время моего второго прогона я подумал, подождите минутку. Под базовым типом он имеет в виду базовый класс, из которого происходят коллекции? (В конце концов, используя заглавную букву C, он обозначал класс коллекций в определенном смысле, а не просто коллекции в общем смысле.) Итак, я изменил свой ответ на Object, потому что я знаю, что Collections расширяет Object .
Оказывается, я был прав в первый раз.
Итак, мой вопрос: если я отвечу на этот вопрос, есть ли у меня опора? Или я упускаю какое-то различие между базовым типом и базовым классом?
Комментарии:
1. Если бы это был промежуточный экзамен, не могли бы вы отправить электронное письмо инструктору за разъяснениями?
2. Если «правильным» ответом было то, что «Коллекции» для «базового типа для коллекций», это явно неправильно. Базовым типом для класса «Коллекции» является «Объект». См. Ответ Джона для получения дополнительных разъяснений.
Ответ №1:
Теперь я знаю, что Collections — это класс, из которого происходит большинство классов коллекций, поэтому я изначально выбрал его.
Ну, это проблема для начала … потому что это не так. Collections
это служебный класс только с частным конструктором, без подклассов.
Collections
имеет Object
как суперкласс, но это не суперкласс ни для чего. Класс самого высокого уровня (кроме Object
), из которого происходят многие коллекции, — это AbstractCollection
, который затем имеет AbstractList
etc в качестве подклассов.
Похоже, это был плохой вопрос, но ваше собственное понимание тоже было ошибочным. Звучит как ничья без очков, но вам, возможно, следует повысить качество тестирования с кем-то.
Комментарии:
1. Спасибо за это, Джон. Я только что снова проверил API, и вы научили меня тому, чего я на самом деле не знал. Я широко использовал ArrayList, но никогда не обращал внимания на иерархию. С моей стороны также могла возникнуть некоторая путаница между классом Collections и интерфейсом Collection. Ну что ж, возможно, я неправильно понял вопрос, но теперь я лучше понимаю его!
Ответ №2:
Предполагая, что в вопросе была орфографическая ошибка, и c должен был быть в нижнем регистре: базовым типом для большинства классов коллекций является Collection<E>
интерфейс.
Если вопрос был написан правильно (с заглавной буквы, а не опечатка): базовый тип Collections
класса Object
.
Я бы сказал, что вопрос в любом случае плохо сформулирован.
Комментарии:
1. И это был мой мыслительный процесс, и почему я сначала выбрал Collection. Но потом я переусердствовал. Спасибо за отзыв.
Ответ №3:
Я предполагаю, что вопрос на самом деле касается основных / базовых типов Java collection framework. Типы здесь будут похожи на Set, List, Queue .. но не в контексте SuperType, SuperClass .