【发布时间】:2013-02-22 17:02:51
【问题描述】:
考虑以下 Java 代码:
List<? super Number> list = new ArrayList<>();
Number n = new Integer(1);
Object o = new Object();
list.add(n); // works, apparently Number super Number is alright
list.add(o); // compiler error!
但是为什么会这样呢?既然在内部,类型擦除使列表成为一个包含对象的列表,为什么不允许将对象(它们是所有类的超类,因此应该满足下限通配符)添加到列表中?
【问题讨论】:
-
这个确切的例子甚至被用在那个问题中......
标签: java list wildcard type-erasure lower-bound