可能重复:
Java 如何:创建通用数组
T[]
如何在 Java中创建类型数组?我不能使用Arrays.newInstance()
,因为我没有Class<T>
. newInstance
某处有通用版本吗?
我的方法原型如下:
public <T> T[][] distribute(T ... balls) {
T[][] answer = ????
// filling answer with data
return answer;
}
更新
对不起,在上面的例子中,我可以从balls
. 但是假设我没有这样的变量。
public <T> T[][] distribute() {
T[][] answer = ????
// filling answer with data
return answer;
}
或者
class<T> {
public T[][] distribute() {
T[][] answer = ????
// filling answer with data
return answer;
}
}
更新2
此示例也不起作用:
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");
}
}