为什么我们无法获取对象列表?

时间:2016-03-23 19:54:44

标签: java generics

我想知道为什么这段代码无法编译:

private static List<? super String> x() {
      return null;
}


List<Object> l = x();

List属于object类型,因此我们可以将所有内容存储在其中。谁能解释一下?

1 个答案:

答案 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>