Java泛型中T、E、K、V、?的含义
首先解释下源码中比较常见的两个形式含义:
-
List<? extends T>
当声明泛型使用的是
super
,是规定了类型下界,即该数组元素的类型下限是T
,后面定义装载的元素类型必须是T
本身或者T
的父类。 -
List<? super T>
当声明泛型使用的是
extends
,是规定了类型上界,即该数组元素的类型上限是T
,后面定义装载的元素类型必须是T
本身或者T
的子类。
下边进入正题:
所谓的这些T、E、K、V、?全都属于java泛型的通配符,其实换成任何字母结果都是一样的,不过约定俗称按照一定的含义就选用这几个字母进行表示了。
- E - Element (在集合中使用,因为集合中存放的是元素) Collection
- T - Type(Java 类) public T Test1(T t){}
- K - Key(键) Map<K,V>
- V - Value(值)
- N - Number(数值类型)List
- ? - 表示不确定的java类型 List<? super Integer> intgerList;