Bonjour, nouveau sur ce site, en tant qu inscrit mais pas en tant que que consultant, je me retrouve confronter a un probleme que je n arrive pas a resoudre concernant une énumeration de vecteur contenant des classes d une autre application...
Je vous expose ce sur quoi je suis:
D'un coté j ai créé une applet, dans laquelle je créer un dictionnaire.Ce dictionnaire comprend une clef en "String", un objet associé "Vector".
Ce Vector contient des objets de ma propre creation a savoir des objets de classe "Ville" et "Capitale" où la classe "Capitale" est héritée de "Ville".
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18
|
ville ville1 = new ville("plérin","France",205000);
ville ville2 = new ville("lexingtone","Angleterre",987654);
Capitale capitale1 = new Capitale("Paris","France",5000000,"Chirac");
Capitale capitale2 = new Capitale("Londre","Angleterre",5000000,"Blaire");
Vector essai1 = new Vector();
Vector essai2 = new Vector();
essai1.addElement(ville1);
essai1.addElement(capitale1);
essai2.addElement(ville2);
essai2.addElement(capitale2);
dicopays.put("FR",essai1);
dicopays.put("AN",essai2); |
voilà le code associé a l entrée dans le dictionnaire des différents éléments.
Mon applet ensuite se charge de sérialiser le Dictionnaire, donc l objet Hashtable dans un fichier d'objet nomé "sauvegarde.bzh"
voila pour ce qui est de la récupération de données temporaire en données persistantes.
Ensuite j ai une autre application , dans laquelle je souhaiterai récupérer ce fichier (remplit d'un objet sérialisé Hashtable) afin d en afficher le contenu dans un "JTree".
Dans cette application, donc, j'arrive bien a ouvrir ce fichier, récupérer le Hashtable ("Dicopays"), et avoir de nouveau une variable HAshtable remplie dans mon application.
En initialisant mon JTree de cette facon :
JTree jTree1 = new JTree(Dicopays);
J'obtiens bien mon JTree initialisé quand je lance , seulement cela ne m affiche que les adresses associées et non pas une valeur String de ma classe Ville ou Capitale, normal puisque pour avoir une description "lisible", j ai besoin d 'appeler une methode polymorphique dans ma classe ville/capitale de type
"NomVille.AffDesc()"
ALors j'ai eu l idée de faire une enumération de mon dictionnaire récupéré dans mon application et de convertir l'objet le plus bas hierarchiquement en string et non plus en ville et capitale, en utilisant justement ma methode "NomVille.AffDesc()"
voila le code associé a mon idée :
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19
|
Enumeration enumDicoListpays;
Enumeration enumVecListpays;
String clefListpays = new String();
Vector vecListpays = new Vector();
String Description = new String();
Vector VectConv = new Vector();
enumDicoListpays = Dicopays.elements();
do {
vecListpays = (Vector)enumDicoListpays.nextElement();
enumVecListpays = vecListpays.elements();
while (enumVecListpays.hasMoreElements())
{
Description = ((ville)enumVecListpays.nextElement()).AffDesc();
VectConv.addElement(Description);
}
DicoConv.put(clefListpays, VectConv);
}
while (enumDicoListpays.hasMoreElements()); |
Ensuivant le code on peut voir que je suis obligé a un moment donné de "caster" : enumVecListpays.nextElement(), car c est bien un objet ville que j ai a cet endroit.
Alors au début ca ne marchait pas, j ai du exporter mon applet en librairie, que j ai importé dans mon application, ce qui m a permit, en fait, qu il reconnaisse bien cette classe qui m est propre.
Jbuilder ne me souligne plus a ce stade "ville" , seulement quand je lance l application il ne veut pas instancier cette classe en fait :
"Principal.java" : impossible de résoudre le symbole : classe ville dans classe verifdico.Principal en ligne 160, colonne 28"
Voilà donc tout le probleme, Je n arrive pas a recréer une instanciation de classe n appartenant pas a l application, mais que j importe.
Je pense que quelque chose m echappe a l import.
Si vous avez une idée n hesitez pas.
merci
Partager