首页 > 解决方案 > 列表和列表有什么区别> 和列表>

问题描述

两者似乎给出了相同的结果。我错过了什么?谢谢。

List<List<?>>
    <==> List<List<? extends Object>>
    <==> List<List<Number>>  **(for example)**

List<? extends List<?>>
    <==> List<? extends List<? extends Object>>
    <==> List<? extends List<Number>>  **(for example)**
    <==> List<List<Number>>  **(List<Number> is a subtype of ? extends List<Number>**

标签: javagenerics

解决方案


在第一种情况下,您有一个列表的列表。

在第二种情况下,您有一个扩展了某物列表的某物列表。

在您的示例中,代码的第二部分有效,因为实际上 aList<number>以它自己的方式 extends List<?>。您可以阅读有关多态性的更多信息以了解原因。

贝娄是一个关于你可以用它做什么的例子。

class MyList<T> extends List<T> {}

List<List<?>> someVariable = Arrays.asList(new MyList(), new MyList()); // won't work.

List<? extends List<?>> someOtherVariable = Arrays.asList(new MyList(), new MyList()); // will work.

这是一个非常基本的示例,但它显示了两者之间的区别。


推荐阅读