泛型上下界 <? extends/super E>
特点
- 上界:list中,只能get,不能add
- 下界:list中,只能add,不能get
上下界特点原因
上界 <? extend Fruit> ,表示所有继承Fruit的子类,但是具体是哪个子类,无法确定,所以调用add的时候,要add什么类型,谁也不知道。但是get的时候,不管是什么子类,不管追溯多少辈,肯定有个父类是Fruit,所以,我都可以用最大的父类Fruit接着,也就是把所有的子类向上转型为Fruit。
extends时:有很多子类,add的时候不知道是哪个子类
只有一个父类,可以用最大的父类存储get到的值
下界 <? super Apple>,表示Apple的所有父类,包括Fruit,一直可以追溯到老祖宗Object 。那么当我add的时候,我不能add Apple的父类,因为不能确定List里面存放的到底是哪个父类。但是我可以add Apple及其子类。因为不管我的子类是什么类型,它都可以向上转型为Apple及其所有的父类甚至转型为Object 。但是当我get的时候,Apple的父类这么多,我用什么接着呢,除了Object,其他的都接不住。
super时:有很多父辈(最大为Object),所以add时,不知道哪个父辈
只能add其子类,子类可以自动向上转型为父辈的类
get的时候不知道该用哪个父辈存储(不能自动向下转型,只能强转)