1. <? super T> 表示以T类型为下限的某种类
实例化的时候对象的泛型一定要大于等于T类型(也就是T的父类或自己)
使用的时候类型一定要小雨等于T类型(也就是T的子类或自己)
2. <? extends T> 表示以T类型为上线的某种类
实例化的时候对象的泛型一定要小于等于T类型(也就是T的子类或自己)
3. demo
List<? extends Fruit> list = new ArrayList<Apple>(); list.add(null); // right list.add(new Fruit()); //error list.add(new Apple()); //error list.add(new SmallApple()); //error
// <? extends T>是T的某种子类,能放入子类的容器不一定放入超类,也就是没可能放入T
List<? super Apple> list = new ArrayList<Fruit>(); list.add(null); // right list.add(new Fruit()); // error list.add(new Apple()); // right list.add(new SmallApple()); // right
来源:https://zhidao.baidu.com/question/96494850.html