A la demande générale, voici le code incriminé:
1) Le composant Swing avec Generic
1 2 3 4 5 6 7 8 9 10 11 12 13
| public class ZTagField<T> extends JTextPane {
public ZTagField(List<T> sourceitems, StringBasedFactory<T> factory) {
this(factory);
setSourceItems(sourceitems);
}
public void setSourceItems(List<T> sourceitems) {
...
}
T[] arrItems = null;
public T[] getItems() {
if (rebuild) arrItems=...
return arrItems;
} |
2) La classe appelante
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19
| public class clTagChooser {
ZTagField<clTag> txtTags = null;
public clTagChooser(clArchive archive) {
super();
...
}
protected void initBaseComponents() {
// Le textpane, qu'on customise après
txtTags = new ZTagField<clTag>(tagfactory);
}
/**
* Retourne les items sélectionnés
* @return clTag[]
*/
public clTag[] getSelectedTags() {
return txtTags.getItems(); // ?? retourne [Object cannot be cast to [clTag ????
/** @todo Revoir cette horreur, mais c'est quoi encore que ce problème de cast ??? */
//return Arrays.asList(txtTags.getItems()).toArray(new clTag[0]);
} |
Contrairement à ce que j'avais dit, ça plante au runtime sur le return txtTas.getItems() avec
java.lang.ClassCastException: [Ljava.lan.Object; cannot be cast to [Lcom.zploger.Compute.clTag;
Partager