如何创建通用数组?
问题描述:
可能重复:
Java如何:通用数组创建
如何在Java中创建类型为 T []
的数组?我无法使用 Arrays.newInstance()
,因为我没有 Class< T>
的对象。在某个地方有 newInstance
的通用版本吗?
How to create an array of type T[]
in Java? I can't use Arrays.newInstance()
since I have no objects of Class<T>
. Is there a generic version of newInstance
somewhere?
我的方法原型如下:
public <T> T[][] distribute(T ... balls) {
T[][] answer = ????
// filling answer with data
return answer;
}
更新
抱歉,在上面的示例中,我可以从球
上课。但假设我没有这样的变量。
Sorry in example above I can take class from balls
. But suppose I have no such a variable.
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;
}
}
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");
}
}
答
1。。数组
是不是
1. Arrays
are Not Generic
2。。这就是在检查过程中检查了数组
的原因编译以及运行时,其中集合
可以通用,并且仅在编译时进行检查 > ....
2. Thats the reason Arrays
are checked during compile as well as runtime, where as Collections
can be Generic and its checked only during the compile time....