泛型不能使用基本类型
Pair //Error
Pair // Right
运行时类型查询只适用于原始类型
虚拟机中的对象总有一个特定的非泛型类型。 因此, 所有的类型查询只产生原始类型。
if (a instanceof Pair) // Error
if (a instanceof Pair) // Error
Pair p = (Pair) a; // Warning-can only test that a is a Pair
Pair stringPair = . .
Pair employeePair = . .
if (stringPair.getClassO == employeePair.getClassO) // they are equal
不能创建参数化类型的数组
虚拟机在创建参数化类型数组时会擦除泛型
Pair[] table = new Pair[10];
// Error
Pair[] table = (Pair[])
new Pair>[10]; //不安全
ArrayList> //推荐
Varargs警告
在声明具有模糊类型(比如:泛型)的可变参数的构造函数或方法时,Java编译器会报unchecked警告。鉴于这些情况,如果程序员断定声明的构造函数和方法的主体不会对其varargs参数执行潜在的不安全的操作,可使用@SafeVarargs进行标记,这样的话,Java编译器就不会报unchecked警告。
@SuppressWamings("unchecked") 也可以排除警告
不能实例化类型变量
public Pair() { first = new T(); second = new T(); } // Error
官方文档给出一些实例化方案,不过我并没有看懂。 //TODO
不能构造泛型数组
public static