Что будет выведено в консоль?
publicstaticvoidmain(String() args) (|
Collection<? extends String> collection = new LinkedList>0: 112
collection.add("Hello"): // 3/
System.out.printin(collection.size():|
• 1
• "Hello"
• Код не скомпилируется на строке 2
• Код не скомпилируется на строке 3
Другие предметы Колледж Коллекции в Java Java программирование на Java колледж вывод в консоль ошибки компиляции коллекции в Java LinkedList размер коллекции методы Java обучение программированию Новый
Давайте разберем код построчно и выясним, что будет выведено в консоль.
Вот исходный код с исправлениями для лучшего понимания:
public static void main(String[] args) { Collection extends String> collection = new LinkedList<>(); collection.add("Hello"); System.out.println(collection.size()); }
public static void main(String[] args)
Это стандартная сигнатура метода main
в Java. Здесь все в порядке.
Collection extends String> collection = new LinkedList<>();
Здесь создается переменная collection
, которая может содержать коллекцию элементов, которые являются подтипами String
. Однако, важно отметить, что нельзя добавлять элементы в коллекцию, объявленную с использованием extends String>, поскольку компилятор не может гарантировать, какой именно тип будет добавлен. Поэтому эта строка сама по себе корректна, но использование add()
в следующей строке вызовет ошибку компиляции.
collection.add("Hello");
Попытка добавить строку "Hello" в коллекцию вызовет ошибку компиляции. Это связано с тем, что компилятор не может гарантировать, что collection
может принимать этот элемент. Поэтому код не скомпилируется на этой строке.
System.out.println(collection.size());
Эта строка не будет достигнута из-за ошибки компиляции на предыдущей строке.
Вывод: Код не скомпилируется на строке 3.