可能重复:
Java中通用数组最简单的替代方法是什么?
我有以下代码:
class B<X>
{
public void create()
{
List<X> l1 = new ArrayList<X>(); //No ERROR
X[] arrr = new X[10]; //ERROR
}
}
Run Code Online (Sandbox Code Playgroud)
我知道由于类型擦除,我无法实例化Generic数组.但为什么我可以实例化一个通用List的实例?
原因是泛型是使用类型擦除实现的:
X在运行时不知道任何类型.这意味着您无法实例化该数组(未知类型).
但是,由于您不需要(实际上不能使用)用于在运行时创建参数化类型的类型信息(再次:类型擦除),因此创建一个ArrayList<X>不是问题.
请注意,无论类型参数是什么,内部ArrayList 始终使用Object[]实际存储.