我想知道为什么这段代码无法编译:
private static List<? super String> x() {
return null;
}
List<Object> l = x();
List属于object类型,因此我们可以将所有内容存储在其中。谁能解释一下?
答案 0 :(得分:2)
List<Object> != List<? super String>
您可以将所有内容存储在其中。
l.add("a");
l.add(1);
l.add(new Object());
但您无法将List<? super String>
分配给List<Object>
,因为它们不是同一回事。
您可以向BigDecimal
添加List<Object>
,但无法将BigDecimal
添加到List<? super String>
。