泛型的约束和限制
不能使用8个基本类型实例化类型参数,即必须是引用类型
原因在于类型擦除,Object不能存储基本类型: (解决方案:用包装类代替)
byte,char,short,int,long,float,double,boolean
从包装类角度来看,或者说三个:
Number(byte,short,int,long,float,double),char,boolean
类型检查不可使用泛型
if(aaa instanceof Pair){}//error
Pair p = (Pair) a;//warn
Pair p;
Pair i;
i.getClass()==p.getClass();//true
不能创建泛型对象数组
GenericMethod[] o=null;//ok
o=new GenericMethod[10];//error
可以定义泛型类对象的数组变量,不能创建及初始化。
注,可以创建通配类型数组,然后进行强制类型转换。不过这是类型不安全的。
o=(GenericMethod[]) new GenericMethod