Я читаю java-руководство по подстановочным знакам в универсальных шаблонах. В следующем коде:
void printCollection(Collection<Object> c) {
for (Object e : c) {
System.out.println(e);
}
}
Означает ли это, что коллекция c
принимает тип объект
в качестве своих элементов, и мы не можем вызвать c.add ("apple")
,
поскольку «яблоко» - это строка, а цикл for принимает любые элементы объекта
из коллекции c
?
Но я не понимаю следующий код,
void printCollection(Collection<?> c) {
for (Object e : c) {
System.out.println(e);
}
}
В этом коде используются подстановочные знаки , что означает «коллекция, тип элемента которой соответствует чему-либо». Означает ли это, что мы можем добавить к нему любой тип объекта, например c.add ("string");
,
c.add (1);
и c.add (новое яблоко ());
?
и цикл for берет любой объект e
из коллекции c
, если c
не является типом объекта
, мы говорим c Элементы
являются целыми числами. Этот код работает? Значит ли это, что его нужно заливать?