如何创建通用数组?

Dim*_*ims 4 java arrays generics instantiation

可能重复:
Java如何:创建通用阵列

如何T[]在Java中创建类型数组?我无法使用,Arrays.newInstance()因为我没有任何对象Class<T>.是否有newInstance某个地方的通用版本?

我的方法原型如下:

public <T> T[][] distribute(T ... balls) {
   T[][] answer = ????

   // filling answer with data

   return answer;

}
Run Code Online (Sandbox Code Playgroud)

UPDATE

对不起上面的例子,我可以上课balls.但是假设我没有这样的变量.

public <T> T[][] distribute() {
   T[][] answer = ????

   // filling answer with data

   return answer;

}
Run Code Online (Sandbox Code Playgroud)

要么

class<T> {
   public T[][] distribute() {

      T[][] answer = ????

      // filling answer with data

      return answer;

   }
}
Run Code Online (Sandbox Code Playgroud)

UPDATE2

此示例也不起作用:

public abstract class GenericArray<T> {

abstract public T create();

public T[] gen1() {
    T[] ans = (T[]) new Object[3];
    ans[0] = create();
    ans[1] = create();
    ans[2] = create();
    return ans;
}

public Integer[] gen2() {
    Integer[] ans = new Integer[3];
    ans[0] = new Integer(0);
    ans[1] = new Integer(0);
    ans[2] = new Integer(0);
    return ans;
}

public static void main(String[] args) {

    GenericArray<Integer> a = new GenericArray<Integer>() {

        @Override
        public Integer create() {
            return new Integer(0);
        }
    };

    Integer[] b = a.gen2();
    Integer[] c = a.gen1(); // this causes ClassCastException

    System.out.println("done");

}

}
Run Code Online (Sandbox Code Playgroud)

Kum*_*tra 6

1. Arrays不是 Generic

2.Arrays在编译和运行时检查原因,其中Collections可以是Generic并且仅在编译期间检查 ....