上限通配符,表示?是T的一个未知子类
如果你需要一个列表提供T类型的元素(即你想从列表中读取T类型的元素),你需要把这个列表声明成<? extends T>,比如List<? extends Integer>,因此你不能往该列表中添加任何元素。
示例:? extends Animal
下限通配符,表示?是T的一个未知父类
如果你需要一个列表使用T类型的元素(即你想把T类型的元素加入到列表中),你需要把这个列表声明成<? super T>,比如List<? super Integer>,因此你不能保证从中读取到的元素的类型。
示例:? super Dog
如果一个列表即要生产,又要消费,你不能使用泛型通配符声明列表。