在Java中创建通用数组

4

A类是泛型类型,在B类中,我想创建一个以Integer为泛型参数的A类型对象数组。

class A<T>
{}

class B
{
    A<Integer>[] arr=new A[4]; //statement-1
    B()
    {
         for(int i=0;i<arr.length;i++)
              arr[i]=new A<Integer>();
    }
}

但是在语句1中,我收到了未经检查的转换警告。创建这个数组的正确方法是什么,以便不需要使用任何抑制警告语句


3
由于类型擦除,您无法创建通用数组。 - blackcompe
2个回答

1
@SuppressWarnings("unchecked")
A<Integer>[] arr = new A[3];
B(){
    for(int i=0;i<arr.length;i++)
     arr[i]=new A<Integer>();
}

1
有时候 Java 泛型并不能让你做想做的事情,你需要有效地告诉编译器你所做的在执行时是合法的。
因此,SuppressWarning 注解用于抑制注解元素的编译器警告。具体来说,unchecked 类别允许抑制由于未检查类型转换而生成的编译器警告。 看一下这个例子..
@SuppressWarnings("unchecked")
A<Integer>[] arr = new A[3];
B(){
   for(int i=0;i<arr.length;i++)
   arr[i]=new A<Integer>();
 }

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接