我们可以在哪里,ArrayList<? extends My_Class>因为如果您以这种方式声明它,它将不允许您添加任何新元素:
ArrayList<? extends My_Class> obj=new ArrayList<? extends My_Class>();
list.add(new Derived_My_Class()); //this is compilation error
Run Code Online (Sandbox Code Playgroud)
用于描述这些关键字的广泛使用的首字母缩略词是:PECS:生产者扩展 - 消费者超级.
因此,如果使用"extends",您的集合将生成给定类型的元素.所以你不能添加它,你只能从它.
一个示例用法是为API的客户端提供一个列表:
public List<? extends CharSequence> getFoo() {
List<String> list = new ArrayList<String>();
list.add("foo");
return list;
}
Run Code Online (Sandbox Code Playgroud)
相关:Java泛型:Collections.max()签名和Comparator