使用泛型类的限制

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.异常类不能使泛型的。

原文地址:https://www.cnblogs.com/kisty/p/4929704.html