泛型限制与局限性
1.不能使用基本类型代替类型参数,因为基本数据类型么有继承自Object。
ArrayList<int> //错误
ArrayList<Integer> // ok
2.运行时查询只适用于原始类
if (order instanceof Order<Integer>) { // error
}
if (order instanceof Order<T>) { // error
}
if (order instanceof Order) { // ok
}
3.不能创建参数化类型的数组
Order<Long>[] orders = new Order<Long>[10]; // error
Order<String >[] orders = (Order<String>[]) new Order[10]; // ok
4.泛型不同的引用不能相互赋值。
ArrayList<Integer> integers = new ArrayList<>();
integers.add(1);
integers.add(12);
ArrayList<Long> longs = new ArrayList<>();
longs.add(23L);
longs.add(1L);
longs = integers; // error
integers = longs; // error
5.不能实例化类型变量
T o = new T(); //error
6.不能构造泛型数组
T[] = new T[]; //error