IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

avec Java Discussion :

Arbre composé d'objets de types différents


Sujet :

avec Java

  1. #1
    Invité
    Invité(e)
    Par défaut Arbre composé d'objets de types différents
    Bonjour à tous.
    Je tente de créer un arbre dont les objets sont de type différents. Enfin presque. J'explique.
    Mon arbre est composé de noeuds, objet dont les attributs sont une étiquette, un noeud fils et un noeud frère. L'étiquette doit pouvoir être un entier, un réel, un caractère ou une String. J'avais pensé utiliser une classe générique pour le noeud, qui se serait présentée ainsi :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    public class Noeud<N> {
     
       private N elem;
       private Noeud<N> fils;
       private Noeud<N> frere;
    ...
    }
    Cette classe fonctionne, tant que les noeuds fils et frère sont du même type que le noeud lui-même. Évidemment, dans mon arbre, le noeud fils d'un noeud de type Integer peut être un String, ou inversement. Mais je n'arrive pas à faire fonctionner ça. Ai je raté un truc quelque part ? Ou devrais je complètement m'y prendre différemment ? Une interface ou une classe abstraite pourraient elles être une solution à ce problème ?

    Merci d'avance.

  2. #2
    Expert éminent sénior
    Avatar de sinok
    Profil pro
    Inscrit en
    Août 2004
    Messages
    8 765
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Août 2004
    Messages : 8 765
    Points : 12 977
    Points
    12 977
    Par défaut
    Je te conseille d'étudier le DefaultMutableNode fourni avec java avec son concept de UserObject. Concept que tu pourras remettre à ta sauce à base de générique si besoin est.

    (le sources de la classe DefaultMutableNode sont bien sûr fournies avec le JDK, dans l'archive src.zip).

    Pour le coté Generics, je te conseille d'aller voir du coté des Wildcards:
    http://blogs.sun.com/CoreJavaTechTip..._wildcards_and
    http://download.oracle.com/javase/tu...wildcards.html
    Hey, this is mine. That's mine. All this is mine. I'm claiming all this as mine. Except that bit. I don't want that bit. But all the rest of this is mine. Hey, this has been a really good day. I've eaten five times, I've slept six times, and I've made a lot of things mine. Tomorrow, I'm gonna see if I can't have sex with something.

  3. #3
    Expert éminent sénior
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 481
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 481
    Points : 48 806
    Points
    48 806
    Par défaut
    Les generics ne sont pas recursif. Si vous êtes incapable à la compilation de déterminer le type, alors vous n'avez vraisemblement pas l'utilité des Generic. Vous pouvez garder votre code tel quel et faire des et faire du typecasting dans votre cas.

Discussions similaires

  1. Réponses: 6
    Dernier message: 07/11/2011, 14h20
  2. Réponses: 4
    Dernier message: 23/02/2010, 16h33
  3. itération sur des objets de types différents ?
    Par jc63 dans le forum Servlets/JSP
    Réponses: 2
    Dernier message: 07/09/2007, 08h19
  4. Tableau d'objets de type différents
    Par Hell dans le forum C++
    Réponses: 9
    Dernier message: 11/01/2005, 22h57
  5. [Sérialisation] d'objets de types différents
    Par Amnesiak dans le forum Général Java
    Réponses: 3
    Dernier message: 08/12/2004, 22h28

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo