Я изучаю SCJP/OCPJP, и я наткнулся на образец вопроса, который кажется странным для меня.Создание родоначальника класса <?>
Пример кода экземпляра две родовые коллекции:
List<?> list = new ArrayList<?>();
List<? extends Object> list2 = new ArrayList<? extends Object>();
«Правильный» ответ на вопрос, что этот код компилируется, но при добавлении в любой коллекции будет производить ошибки во время выполнения.
Когда я пытаюсь скомпилировать такой код, я просто получаю ошибки. Учебник Java не показывает этот тип кода, вместо этого он обычно использует подстановочные знаки в качестве части ускорения.
Collection<?> c = new ArrayList<String>();
Являются ли две общие коллекции выше даже законного кода? Вторая по моей логике будет только запрещать интерфейсы. Первый выглядит совершенно бесполезным. Зачем использовать общий элемент, который не пытается контролировать?
Не видите, как это будет скомпилировано И вы можете добавить в обе коллекции просто отлично - только точно один объект. Я оставляю это как упражнение для читателя, чтобы выяснить, какой объект действителен для каждого класса :) – Voo
Вы тоже не можете. Я хотел узнать, был ли образец вопрос/ответ неправильным и, по-видимому, это так. – jeremyjjbrown
Вниз проголосовали именно по какой причине? – jeremyjjbrown