用Java创建通用数组

Ext*_*der 4 java arrays generics casting

public K[] toArray()
{
    K[] result = (K[])new Object[this.size()];
    int index  = 0;
    for(K k : this)
        result[index++] = k;
    return result;
}
Run Code Online (Sandbox Code Playgroud)

这段代码似乎不起作用,它会抛出异常:

java.lang.ClassCastException:[Ljava.lang.Object; 不能投...

有人能告诉我如何创建一个泛型类型的数组?谢谢.

Mau*_*rry 11

你不能:你必须把这个类作为一个参数传递:

public <K> K[] toArray(Class<K> clazz)
{
    K[] result = (K[])Array.newInstance(clazz,this.size());
    int index  = 0;
    for(K k : this)
        result[index++] = k;
    return result;
}
Run Code Online (Sandbox Code Playgroud)