我无法理解下面的文章: http://www.ibm.com/developerworks/java/library/j-jtp01255.htmlJava泛型协方差
下,
泛型不是协变
笔者状态,
因为ln是一个列表,添加一个浮在它似乎完全合法。但是,如果 LN用李别名,那么 将打破类型安全承诺 在李的定义隐含 - 它是一个整数列表,这 就是泛型类型不能 协变。
我不明白它说的部分 “如果ln被别名为li”。作者的意思是别名(参考?)。引用行上面的代码片段似乎说明了在java中什么是非法的,而不是为什么。如果有人能够用一个例子来解释,那对我来说会非常有帮助。 在此先感谢。
IIRC,泛型不是协变的,因为他们无法改变阵列,如何实现/ Java中(向后兼容)的早期版本中使用,它按门铃的人? – Rhangaun 2010-04-18 02:12:33
@Skeptic,Arrays是一个协变泛型实现的例子 - 它会抛出运行时异常。 Java不能这样做,因为泛型在运行时会被擦除,所以它只能通过限制协方差来控制泛型。 – Yishai 2010-04-18 02:31:49
@Yishai,Steele在一个名为“Growing a Language”的演讲中讨论了数组的问题,这个演讲目前我看不到。 – Rhangaun 2010-04-18 02:57:59