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 :

Comportement selon une liste d'objets


Sujet :

avec Java

  1. #1
    Membre confirmé

    Profil pro
    Inscrit en
    Août 2008
    Messages
    1 191
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2008
    Messages : 1 191
    Points : 595
    Points
    595
    Par défaut Comportement selon une liste d'objets
    Bonjour j'ai une liste d'objet d'arraylist elle contient :
    -soit des objet de type dépense
    -soit des objet de type recette

    comment faire pour mettre une condition selon le type d'objet ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
     
    if(liste_obj.getClass().equal(//objet de type dépense))
    {
    // je dépense
    }
     
     
    if(liste_obj.getClass().equal(//objet de type recette))
    {
    // je reçois de l'argent
    }
    un liste_obj.getClass() me donne par exemple "CaseDepense"
    merci de la réponse

  2. #2
    Expert éminent
    Avatar de fred1599
    Homme Profil pro
    Lead Dev Python
    Inscrit en
    Juillet 2006
    Messages
    3 825
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : Lead Dev Python
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Juillet 2006
    Messages : 3 825
    Points : 7 122
    Points
    7 122
    Par défaut
    Voir du côté de instanceof
    Celui qui trouve sans chercher est celui qui a longtemps cherché sans trouver.(Bachelard)
    La connaissance s'acquiert par l'expérience, tout le reste n'est que de l'information.(Einstein)

  3. #3
    Membre confirmé

    Profil pro
    Inscrit en
    Août 2008
    Messages
    1 191
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2008
    Messages : 1 191
    Points : 595
    Points
    595
    Par défaut
    merci ,
    j'ai donc fait ceci

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
     
     
        ArrayList<Case> case_monopoly = new ArrayList<Case>();
     
        public void actionCase(int case_num) {
     
            Case case_courant = case_monopoly.get(0);
            System.out.println(case_courant.getClass());
     
            if (case_courant instanceof monopoly.CaseDepense) {
                System.out.println("je dépense");
            }
     
            if (case_courant instanceof monopoly.CaseRecette) {
     
                System.out.println("Gain");
            }
            System.out.println("case :" + case_courant.getNom());
     
        }
    maintenant je suis coincé,
    j'ai la classe case , et 2 classe hérités de case dépense et recette
    comment je peux faire pour obtenir les méthode et attributs des classes
    dépense ou recette ? car pour le moment je n'ai que accès au méthodes
    parent "case"

  4. #4
    Modérateur
    Avatar de joel.drigo
    Homme Profil pro
    Ingénieur R&D - Développeur Java
    Inscrit en
    Septembre 2009
    Messages
    12 430
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur R&D - Développeur Java
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2009
    Messages : 12 430
    Points : 29 131
    Points
    29 131
    Billets dans le blog
    2
    Par défaut
    Salut,

    Tu peux faire un cast, par exemple :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     if (case_courant instanceof monopoly.CaseDepense) {
                System.out.println("je dépense");
                monopoly.CaseDepense caseDepense = (monopoly.CaseDepense)case_courant;
               // maintenant tu peux appeler les méthodes de CaseDepense sur la variable caseDepense...
    }
    L'expression "ça marche pas" ne veut rien dire. Indiquez l'erreur, et/ou les comportements attendus et obtenus, et donnez un Exemple Complet Minimal qui permet de reproduire le problème.
    La plupart des réponses à vos questions sont déjà dans les FAQs ou les Tutoriels, ou peut-être dans une autre discussion : utilisez la recherche interne.
    Des questions sur Java : consultez le Forum Java. Des questions sur l'EDI Eclipse ou la plateforme Eclipse RCP : consultez le Forum Eclipse.
    Une question correctement posée et rédigée et vous aurez plus de chances de réponses adaptées et rapides.
    N'oubliez pas de mettre vos extraits de code entre balises CODE (Voir Mode d'emploi de l'éditeur de messages).
    Nouveau sur le forum ? Consultez Les Règles du Club.

  5. #5
    Expert éminent
    Avatar de fred1599
    Homme Profil pro
    Lead Dev Python
    Inscrit en
    Juillet 2006
    Messages
    3 825
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : Lead Dev Python
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Juillet 2006
    Messages : 3 825
    Points : 7 122
    Points
    7 122
    Par défaut
    Si les attributs de classe sont en private, il faudra créer des méthodes de classe afin d'y avoir accès à l'extérieur.
    Celui qui trouve sans chercher est celui qui a longtemps cherché sans trouver.(Bachelard)
    La connaissance s'acquiert par l'expérience, tout le reste n'est que de l'information.(Einstein)

  6. #6
    Membre confirmé

    Profil pro
    Inscrit en
    Août 2008
    Messages
    1 191
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2008
    Messages : 1 191
    Points : 595
    Points
    595
    Par défaut
    merci je n'avais pas penser à caster

  7. #7
    Membre expérimenté Avatar de Nico02
    Homme Profil pro
    Developpeur Java/JEE
    Inscrit en
    Février 2011
    Messages
    728
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Developpeur Java/JEE
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2011
    Messages : 728
    Points : 1 622
    Points
    1 622
    Par défaut
    Salut,

    Comme le dit @joel.drigo, le cast me parait être une bonne option si tu as besoin d'appeler des méthodes spécifiques.

    Après tu peux aussi utiliser le polymorphisme en définissant une méthode commune Action() par exemple, que tu vas redéfinir dans chaque classe spécifique pour spécialiser ton action en fonction de ta case.

    De cette manière l'appel est transparent.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
     
    public abstract class Case{
     
      public abstract void action();
    }
     
    public class CaseDepense extends Case{
     
      public void action(){ System.out.println("je dépense"); }
    }
     
    public class CaseRecette extends Case {
     
      public void action(){ System.out.println("Gain"); }
    }
    et l'appel

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    case_courant.action();

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [VBA-E]Création de boutons selon une liste
    Par frevale dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 25/03/2006, 14h31
  2. Créer une liste d'objets statiques dans une classe
    Par crossbowman dans le forum C++
    Réponses: 3
    Dernier message: 13/03/2006, 09h11
  3. methode qui retourne une liste d'objets du meme type
    Par anoukhan dans le forum Oracle
    Réponses: 8
    Dernier message: 12/01/2006, 18h38
  4. Tri d'une liste d'objet CObList
    Par cjacquel dans le forum MFC
    Réponses: 1
    Dernier message: 13/07/2005, 13h50
  5. [MFC] Retourner une liste d'objets
    Par 1cado dans le forum MFC
    Réponses: 10
    Dernier message: 28/07/2003, 12h11

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