泛化类的定义中<? extends T>和<? super T>各代表什么意思

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

posted @ 2022-03-11 10:44  程序员小明1024  阅读(246)  评论(0编辑  收藏  举报