java中 List<? extends T>与List<? super T> 表示的意思和区别

一、前置名词解释
(1)?
?表示类型通配符,即具体传什么参数类型,在List定义时不用考虑。

(2)<T>
这里的<>表示泛型,T表示泛型中装载的类型为T类型,等到需要的时候,我们可以具体这个T。我们在使用动态数组实现ArrayList的时候,如果希望这个ArrayList不仅仅支持一个类型的话,我们可以给这个ArrayList定义泛型,泛型中存放的是T类型。在实际创建出这个ArrayList对象时,我们可以指定泛型中的具体类型。

(3)<? extends T>
类型上界,这里的?可以是T类型或者T的子类类型。

(4)<? super T>
类型下界,这里的?可以是T类型或者T的超类类型,但不代表我们可以往里面添加任意超类类型的元素。

原文地址:https://www.cnblogs.com/Samuel-Leung/p/15015082.html