泛型,即参数化类型 https://docs.oracle.com/javase/tutorial/extra/generics/index.html
An enhancement to the type system that supports operations on objects of various types while providing compile-time type safety.
基本类型不能作为泛型
静态方法、静态初始化块、静态变量的声明和初始化不能使用泛型。
泛型不是重载要素
instanceof 不能用泛型
Pair<Sub> 与 Pair<Parent> 没有任何继承关系
<T super 类 & 接口> 泛型为父类
<T extends 类 & 接口> 泛型为子类
Java6及以前必须这么写 List<String> strList1 = new ArrayList<String>();
Java7及以后可以这么写 List<Integer> strList2 = new ArrayList<>();
strList1.getClass()==strList2.getClass()=>true
泛型规范:
-
T - Type(类型)
-
R - Result(结果)
-
K - Key(键)
-
V - Value(值)
-
E - Element (元素)
-
N - Number(数字)
-
? - 不确定类型
?和T的区别:Java 泛型 T,E,K,V,?,傻傻分不清?