Почему Collection НЕ является супертипом всех видов коллекций? [дубликат] ⇐ JAVA
Программисты JAVA общаются здесь
Anonymous
Почему Collection НЕ является супертипом всех видов коллекций? [дубликат]

Сообщение Anonymous »

Я изучаю подстановочные знаки в документации Oracle и не могу понять следующий раздел:
*Рассмотрим проблему написания процедуры, которая распечатывает все элементы коллекции. Вот как вы могли бы написать это на более старой версии языка (то есть версии до 5.0):
*

Код: Выделить всё

void printCollection(Collection c) {
Iterator i = c.iterator();
for (k = 0; k < c.size(); k++) {
System.out.println(i.next());
}
}
*А вот наивная попытка написать его с использованием дженериков (и нового синтаксиса цикла for):
*

Код: Выделить всё

void printCollection(Collection c) {
for (Object e : c) {
System.out.println(e);
}
}
*Проблема в том, что эта новая версия гораздо менее полезна, чем старая. В то время как старый код можно было вызвать с коллекцией любого типа в качестве параметра, новый код принимает только Collection, которая, как мы только что продемонстрировали, не является супертипом всех видов коллекций!
*
https://docs.oracle.com/javase/tutorial ... cards.html
В учебнике указано Collection Это не супертип всяких коллекций. Мне интересно, почему, например, ArrayList не является подтипом Collection? Кроме того, почему ArrayList не является подтипом ArrayList?
Насколько я понимаю, все классы являются потомками класса Object. Исключением могут быть интерфейсы и примитивные типы.

Подробнее здесь: https://stackoverflow.com/questions/787 ... ollections

Вернуться в «JAVA»


Яндекс.Метрика