【发布时间】:2012-09-29 10:54:12
【问题描述】:
可能重复:
what is the difference between 'super' and 'extends' in Java Generics
Java Generics WildCard Question: List<? extends A>
我发现了 Java 泛型的一个奇怪行为,我无法向自己解释。
如果我尝试以下代码,我希望它应该可以工作
List<? extends Number> list = new ArrayList<>();
list.add(new Integer(2));
list.add(new Float(2.0f));
但这会导致编译器错误。
如果我将第一行更改为
List<? super Number> list = new ArrayList<>();
它对编译器工作正常。
谁能给我解释一下? 和有什么区别?扩展和?超级?
【问题讨论】:
-
另请参阅stackoverflow.com/questions/1910892/… 以及该问题中的链接。