泛型理解,? extends T, ? super T

江枫思渺然 提交于 2020-03-05 01:23:50
注:在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>类型赋值的时候要赋予指定类型的集合,跟是否继承实现没关系,否则编译不过

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!