Déclarer et utiliser un objet polymorph
bonjour,:D
J'ai toujours a gérer des objets polymorphes entre deux types les IMacroState et les IState. A ce sujet j'ai à déclarer une liste qui doit recevoir soit des IState soit des IMacroState:
Code:
public static java.util.ArrayList<IMacroState> ListOldObjet;
Mais je ne sait pas comment dire qu'une liste peut avoir deux types
celui qui m'aidera sera:ccool:
J'ai donc mis cette syntaxe
Code:
public static java.util.ArrayList<?> ListOldObjet;
mais j'ai toujours une difficulté avec l'utilisation de cette déclaration:
Code:
ListOldObjet.addAll( (Collection<?>)stateTo);
dans le quel AddAll est refusé par le complîlateur
la syntaxe est bonne mais j'ai toujours une exeption quand j'ajoute à la liste
Code:
1 2 3 4
| java.lang.ClassCastException: com.all4tec.matelo.datamodel.diagram.impl.MacroState cannot be cast to java.util.Collection
at com.all4tec.matelo.linguistique.wizards.BuildModel.AddReferenceInlist(BuildModel.java:551)
at com.all4tec.matelo.linguistique.wizards.BuildModel.ProcessReferenceInList(BuildModel.java:528)
at com.all4tec.matelo.linguistique.wizards.BuildModel.BuildCurrentSubChain(BuildModel.java:2300) |
quand j'execute :
Code:
ListOldObjet.addAll( (Collection) stateTo);