我有了这个通用类,具有方法返回一个通用阵列:通用阵列转换异常
public class ZTagField<T> extends JTextPane {
public ZTagField(StringBasedFactory<T> factory) {
assert (factory != null);
this.factory = factory;
init();
}
public T[] getItems() {
...
T[] arrItems = (T[]) currentItems.toArray((T[])new Object[0]);
return arrItems;
}
而另一个使用它:
public class Xxx {
ZTagField<clTag> txtTags = null;
public Xxx() {
txtTags = new ZTagField<clTag>(createFactory());
}
public clTag[] getSelectedTags() {
return txtTags.getItems();
}
}
后者txtTags.getItems()
给了我一个异常:==>Exception [Object cannot be cast to [clTag
????
任何人都可以解释我为什么吗?
我试图应用尽可能多的这How to create a generic array,无济于事。 我有一个丑陋的解决方法:
return Arrays.asList(txtTags.getItems()).toArray(new clTag[0])
但我想有它然后ZTagFieldClass。
请张贴堆栈跟踪。 – Turing85
所有好的3方法。由于返回一个List而不是一个数组会更容易,我将首先回到设计中,看看为什么我设计这个类(很久以前)返回一个数组而不是List。谢谢。 – lvr123