不清楚楼主对泛型通配符了解的多不,所以多写了一些,如果了解,无视第1点,直接看第2点,楼主的问题主要在第2点说明。
1.ArrayList<? super Student>限制ArrayList<T>中的T属于? "super Student"的范围(Student及其父类),也就是说我们在给ArrayList<? super Student>的变量赋值时只能赋泛型为Student及其父类的ArrayList对象,如代码:
public class Demo7 {
public static void main(String[] args) {
ArrayList<? super A> list = new ArrayList<A>();//A属于"A及A的父类"这个范围内故编译成功
ArrayList<? super A> list1 = new ArrayList<Object>();//Object也为A的父类故编译成功
ArrayList<? super A> list2 = new ArrayList<B>();//B是A的子类,不属于"A及A的父类"这个父类故编译失败