? extends A 是 java.lang.reflect.WildcardType
?号表示一个未知的类型。你可以认为是任意的类。
? extends A 意思就是 任意继承自A的类
这是List中的元素类型的范围问题,List<T extends A>其实就是List<T>, List中的元素只能是T的一个对象。
List<? extends A>定义的变量包含的元素可以是A的对象,也可以是A的子类的对象。
比如有
class A{}
class B extends A{}
class T extends B{}
可以定义List<T> list1= new ArrayList();
list1.add(new T()); list1.add(new T()); list1.add(new T()); //List中现在有三个元素。
list1.add(new A()); //这种用法不正确
另 List<? extends A> list2 = new ArrayList();
list2.add(new A()); list2.add(new B()); list2.add(new T()); //List中也有三个元素,用法是正确的 |