Java 列表之间的差异<;?扩展A>;和列表<;A>;

Java 列表之间的差异<;?扩展A>;和列表<;A>;,java,generics,collections,Java,Generics,Collections,多年来,我一直在试图弄清楚aListaListaList之间到底有什么区别,如果你有B级扩展了a,那么 你可以做: List<? extends A> myList = new ArrayList<B>(); 因为List是一个泛型类型为a的列表 因此,如果您有一个列表,您就知道它的泛型类型正是a,因此您可以将a的任何实例放入其中 如果您有B类扩展A,则 你可以做: List<? extends A> myList = new ArrayList<B&

多年来,我一直在试图弄清楚a
Lista
Lista
List之间到底有什么区别,如果你有
B级扩展了a
,那么

你可以做:

List<? extends A> myList = new ArrayList<B>();
因为
List
是一个泛型类型为
a
的列表


因此,如果您有一个
列表
,您就知道它的泛型类型正是
a
,因此您可以将
a
的任何实例放入其中

如果您有
B类扩展A
,则

你可以做:

List<? extends A> myList = new ArrayList<B>();
因为
List
是一个泛型类型为
a
的列表


因此,如果您有一个
列表
,您就知道它的泛型类型正是
a
,因此您可以将
a
的任何实例放入其中

也请注意,您不能
new ArrayList。请注意,您不能
new ArrayList