У меня возникли проблемы с пониманием к следующей статье: http://www.ibm.com/developerworks/java/library/j-jtp01255.htmlJava дженериков ковариационной
Under,
Дженерики не КОВАРИАНТНОЙ
автор заявляет,,
Поскольку ln - это список, добавив Поплавок к нему кажется совершенно законным. Но если пер были совмещенные с ли, то разорвет типа безопасности обещания неявного в определении Li - , что это список целых чисел, которые поэтому общие типы не могут быть ковариантны.
Я не могу понять, в каком месте он говорит «Если бы вы были с aliased ли». Что означает автор по псевдониму? (Ссылка?). Фрагмент кода выше цитируемой строки, кажется, иллюстрирует ЧТО является незаконным в Java, а не ПОЧЕМУ. Было бы очень полезно, если бы кто-нибудь мог объяснить пример. Спасибо заранее.
IIRC, общие типы не ковариантны, потому что они не могли изменить, как массивы были реализованы/использованные в предыдущих версиях Java (обратная совместимость), она звонит колокол кому-то? – Rhangaun
@Skeptic, Массивы - пример того, как может выглядеть реализация ковариантных дженериков - это приведет к выбросам исключений во время выполнения. Java не может этого сделать, потому что дженерики стираются во время выполнения, поэтому он может управлять только через ограничение ковариации. – Yishai
@ Yishai, эта проблема с массивами обсуждалась Стилом в презентации под названием «Рост языка», которую я, похоже, сейчас не могу найти. – Rhangaun