我有了這個通用類,具有方法返回一個通用陣列:通用陣列轉換異常
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