Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
Форум программистов > Java: Общие вопросы > Непонятки с генериками и super в частности |
Автор: kaa 27.11.2011, 19:52 | ||||||
В общем есть два класса
И есть код:
Так вот, Eclipse мне подсвечивает метод add и пишет такую ошибку
Метод add у меня желает принимать только MyClass2 :( Вопрос: почиму?; где я накосячил? |
Автор: kaa 27.11.2011, 21:00 | ||
Нашёл ответ. http://www.javabeat.net/tips/135-using-super-in-generics-java-50.html
Если вкратце: super позволяет инициализировать переменную, объявленную с супером, генериками с родительскими типами. которые выше по иерархии наследования, типами; но вот добавлять в саму коллекцию можно только объекты дочерних типов для декларации супер, при этом добавляемый объект автоматом тестируется на IS-A для всех родителей super-а. Громоздко как-то получилось... Ну, в статье там всё понятней, это выжимка ![]() |
Автор: Sibit 28.11.2011, 05:21 |
А зачем может понадобиться такая фича? |
Автор: kaa 29.11.2011, 15:14 |
Позволяет передавать типобезопасные коллекции куда-нить + оставляет возможность добавлять в них элементы. Например при использовании ключевого слова extends добавлять в коллекцию уже ничего нельзя - только получать из неё элементы. Положа руку на сердце: ни разу такой фичей не пользовался. Я просто всё мечтаю SCJP сдать ![]() |