注:在Java中,经常用T、E、K、V等形式的参数来表示泛型参数。
T:代表一般的任何类。
E:代表 Element 的意思,或者 Exception 异常的意思。
K:代表 Key 的意思。
V:代表 Value 的意思,通常与 K 一起配合使用。
? 通配符类型 无边界的通配符(Unbounded Wildcards), 就是<?>, 比如List<?>
无边界的通配符的主要作用就是让泛型能够接受未知类型的数据.
<? extends T> 表示类型的上界,表示参数化类型的可能是T 或是 T的子类
<? super T> 表示类型下界(Java Core中叫超类型限定),
表示参数化类型是此类型的超类型(父类型),直至Object
注意: 你可以为一个泛型指定上边界或下边界, 但是不能同时指定上下边界.
上界限定符接受 extends 后面类的本身与其子类, 下界限定符接受 super 后面类的本身与其父类。无限定通配符接受任何类。
List<?> list 可以赋值任何类型,但是不能添加具体的类型
List<Object> list 只能赋值List<Object>,但是可以添加任何类型
List<?extends Object> list 与 List<?> list没区别, 可以把List<?>类型付给List<?extends Object>类型
注意:List<T> 这里T是指定get与add的数据类型,对List<T>类型赋值的时候要赋予指定类型的集合,跟是否继承实现没关系,否则编译不过
来源:CSDN
作者:老谭TYH
链接:https://blog.csdn.net/qq_30436011/article/details/104652555