在创建Java的泛型数组 [英] Creating generic arrays in Java
本文介绍了在创建Java的泛型数组的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
public K[] toArray()
{
K[] result = (K[])new Object[this.size()];
int index = 0;
for(K k : this)
result[index++] = k;
return result;
}
这code似乎没有正常工作,它会抛出一个异常:
This code does not seem to work, it will throw out an exception:
java.lang.ClassCastException:[Ljava.lang.Object;不能转换为...
java.lang.ClassCastException: [Ljava.lang.Object; cannot be cast to ...
有人能告诉我怎样才能创建一个泛型类型的数组?
谢谢你。
Could someone tell me how I can create an array with a generic type? Thanks.
推荐答案
您不能:你必须通过这个类作为一个参数:
You can't: you must pass the class as an argument:
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;
}
这篇关于在创建Java的泛型数组的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文