java通配符?, T, E, K, V, N(简单易懂)
文章目录
- 先点击收藏和点赞,切勿白嫖,感谢
- 常见的通配符 ?, T, E, K, V, N
- ?和Object的区别
- 上界通配符<? extend E>
- 无界通配符List<?> Class<?>
- 下界通配符<? super E>
先点击收藏和点赞,切勿白嫖,感谢
常见的通配符 ?, T, E, K, V, N
有时候我们看底层实现代码的时候会遇见很多通配符,例如?, T, E, K, V, N,其实这些并没有任何区别,我们自己也可以设置
A-Z的任意一个,只不过大家都心照不宣的在命名上有些约定
通配符 | 定义 |
---|---|
T(Type) | 具体的java类 |
E(Element) | 集合中使用,因为集合中存放的是元素 |
K(Key) | 键 |
V(Value) | 值 |
N(Number) | 数值类型 |
?和Object的区别
?类型不确定和Object作用差不多,好多场景下可以通用,但?可以缩小泛型的范围,如:List<? extends E>,指定了范围只能是E的子类,但是用 List ,没法做到缩小范围。
上界通配符<? extend E>
可以传入的实参类型是E或者E的子类
无界通配符List<?> Class<?>
可以传入一个不确定的类型
下界通配符<? super E>
可以传入的实参的类型是E或者E的父类类型