1.不能使用new E() 即不能使用泛型类型创建实例。例如,下面语句错误:
E object = new E();
2.不能使用new E[],即不能使用泛型类型参数创建数组。例如,下面语句错误:
E[] elements = new E[capacity];
可以通过创建一个Object 类型的数组,然后将它的类型转换为E[]来规避这个限制,如下:
E[] elements = (E[])new Object[capacity];
3.不能使用泛型类创建数组。例如,下面代码错误:
ArrayList<String>[] list = new ArrayList<String>[10];
可以使用下面代码来避免限制:
ArrayList<String>[] list = (ArrayList<String>[])new ArrayList[10];
4.在静态环境下,不容许类的参数是泛型类型
由于泛型类的所有实例都有相同的运行类,所以泛型类的静态变量和方法是被它的所有实例共享的,所以在静态方法,数据域或者初始化语句中,为了类而引用泛型类参数是非法的:
public class Test<E>{
public static void m(E o1){
}
public static E o1;
static{
E o2;
}
}
5.异常类不能使泛型的。