? super T 代表T本身和T的父类
? extends T 代表T本身和T的子类
这个玩意有什么用呢,起到限定作用,比如你要实现一个list集合拷贝的方法,即Collect.copy(listD,listS);
如果不加任何限制,那么任何类型的两个List都能进行拷贝肯定是不正确的,因为里面的字段千差万别。
假设ListD代表目的集合 listS代表源集合 请问哪个代表? super T 哪个代表? extends T
按照正常思维思考一下 源集合肯定是来者不拒 越多越好 能拷贝的字段越多越好 因此对源集合不做限制
不做限制的话肯定选 ? extends T 啊 因为子类既拥有父类 又能自己额外添加东西。
目的集合为了起到这个拷贝方法的限制性,需要用? super T 这样拷贝的时候才能真正拷贝到想要的。