三嵌套Java泛型

时间:2018-03-23 11:33:16

标签: java generics upperbound

我试图通过更复杂的例子来理解Java Generics和UpperBound Wildcards。

我有一个扩展任何类型对象列表的任何列表的列表:

List<List<? extends List<?>>> veryNestedList;

我在想是否第一个嵌套List实际上可以接受ArrayList的任何实现。

在我的想法中:

List<? extends ArrayList<?>> 

应该是以下子类型:

List<? extends List<?>>

所以我试过这种方式:

List<List<? extends List<?>>> veryNestedList = new ArrayList<List<? extends ArrayList<?>>>();

不幸的是,这不起作用。

我需要做的是:

List<? extends List<? extends List<?>>> veryNestedList = new ArrayList<List<? extends ArrayList<?>>>();

我不确定这是什么原因。

@Edit 现在,当我看到这个:

是因为即使

 List<? extends ArrayList<?>> 

是子类型

 List<? extends List<?>>

当我们将它放入另一个列表的泛型类型时,它不再是协变的吗?

0 个答案:

没有答案