用Java创建通用数组

时间:2012-03-12 06:19:57

标签: java arrays oop generics

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

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中,我收到了未经检查的转换警告。创建此数组的正确方法是什么,所以我不需要使用任何抑制警告声明

2 个答案:

答案 0 :(得分:1)

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

答案 1 :(得分:1)

有时Java泛型不会让你做你想做的事情,你需要有效地告诉编译器你在执行时真正做的事情是合法的。
所以SuppressWarning annotation is used to suppress compiler warnings for the annotated element. Specifically, the unchecked category allows suppression of compiler warnings generated as a result of unchecked type casts. 检查一下..

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