在定义泛型类,泛型方法,泛型接口的时候经常会碰见很多不同的通配符,比如 T,E,K,V 等等。
Java泛型中的标记符含义:
- T – Type(Java 类)
- E – Element (集合中使用)
- K – Key(键)(键值对时使用)
- V – Value(值)
- N – Number(数值类型)
- ? – 表示不确定的java类型
本质上其实没什么区别,只不过是一个约定好的代码,也就是说使用大写字母A,B,C,D…定义的,就都是泛型,把T换成A也一样,这里T只是名字上的意义而已,只是一种约定俗成的写法。
注:List<? extends T>和List <? super T>有什么区别?
List<? extends T>可以接受任何继承自T的类型的List。上界通配符。
List<? super T>可以接受任何T的父类构成的List。下界通配符。
例如List<? extends Number>可以接受List<Integer>或List<Float>。
频繁往外读取内容的,适合用上界Extends。
经常往里插入的,适合用下界Super。