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

Collection et Stream Java Discussion :

Accéder aux méthodes d'un objet dans une collection


Sujet :

Collection et Stream Java

  1. #1
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Janvier 2012
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Enseignement

    Informations forums :
    Inscription : Janvier 2012
    Messages : 6
    Points : 5
    Points
    5
    Par défaut Accéder aux méthodes d'un objet dans une collection
    Bonjour tout le monde,

    Je suis tout nouveau en Java, et là pour m’entraîner j'essaie de coder un jeu d'échecs.

    Naturellement, comme tout bon novice, j'ai un problème, le voici :

    Je veux stocker dans une collection (genre LinkedList) la liste des pièces sur l'échiquier, mais après j'ai un problème quand je veux avoir accès aux méthodes que possèdent mes pièces (Piece étant une classe abstraite) :

    Par exemple si je veux avoir connaître la couleur de la première pièce dans ma collection, je fais Macollection.getFirst().getcouleur().

    Mais java n'est pas content parce que rien ne lui indique que le premier objet de Macollection appartient à la classe Piece, et que par conséquent il possède une méthode getcouleur.

    Je peux contourner le problème en utilisant un tableau de pieces Piece[] à la place de ma collection, mais c'est plus chiant à gérer (avec la taille etc...)

    Voila donc n'y a-t-il pas un moyen de faire comprendre à java que tous les éléments de ma collection sont des Pieces ?

    Je vous remercie !

  2. #2
    Membre expérimenté
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2004
    Messages
    1 184
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Avril 2004
    Messages : 1 184
    Points : 1 745
    Points
    1 745
    Par défaut
    Si tu utilises java 5 et +, tu peux typer ta collection.
    Ce qui te permettra d'accéder directement aux méthodes de la classe Piece de chaque item.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    List<Piece> listePieces = new LinkedList<Piece>();
    listePieces.get(i).getCouleur();
    Si t'es en java 1.4, un cast est nécessaire.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    List listePieces = new LinkedList();
    ((Piece)listePieces.get(i)).getCouleur();

  3. #3
    Modérateur

    Avatar de Robin56
    Homme Profil pro
    Architecte de système d'information
    Inscrit en
    Juin 2009
    Messages
    5 297
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Architecte de système d'information

    Informations forums :
    Inscription : Juin 2009
    Messages : 5 297
    Points : 13 670
    Points
    13 670
    Par défaut
    Tu peux typer ta collection comme ci-dessous :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    List<Piece> maList = new LinkedList<Piece>();
    Responsable Java de Developpez.com (Twitter et Facebook)
    Besoin d'un article/tutoriel/cours sur Java, consulter la page cours
    N'hésitez pas à consulter la FAQ Java et à poser vos questions sur les forums d'entraide Java
    --------
    Architecte Solution
    LinkedIn : https://www.linkedin.com/in/nicolascaudard/

  4. #4
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Janvier 2012
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Enseignement

    Informations forums :
    Inscription : Janvier 2012
    Messages : 6
    Points : 5
    Points
    5
    Par défaut
    A ok merci beaucoup !

    Et sympa la méthode du castage
    (c'est puissant un compilateur java quand même !)

  5. #5
    Membre expérimenté
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2004
    Messages
    1 184
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Avril 2004
    Messages : 1 184
    Points : 1 745
    Points
    1 745
    Par défaut
    Citation Envoyé par coucouhibou Voir le message
    A ok merci beaucoup !

    Et sympa la méthode du castage
    (c'est puissant un compilateur java quand même !)
    A choisir (Et si t'es en java 5 et +) utilise le typage des collections. C'est bien mieux.

  6. #6
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Janvier 2012
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Enseignement

    Informations forums :
    Inscription : Janvier 2012
    Messages : 6
    Points : 5
    Points
    5
    Par défaut
    Citation Envoyé par Mathieu.J Voir le message
    A choisir (Et si t'es en java 5 et +) utilise le typage des collections. C'est bien mieux.
    Ouais c'est ce que j'ai fait !

    Et merci pour la vitesse des réponses !

  7. #7
    Modérateur

    Avatar de Robin56
    Homme Profil pro
    Architecte de système d'information
    Inscrit en
    Juin 2009
    Messages
    5 297
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Architecte de système d'information

    Informations forums :
    Inscription : Juin 2009
    Messages : 5 297
    Points : 13 670
    Points
    13 670
    Par défaut
    Citation Envoyé par Mathieu.J Voir le message
    A choisir (Et si t'es en java 5 et +) utilise le typage des collections. C'est bien mieux.
    Oui car la méthode du cast ajoute de l'incertitude dans ton code et des potentiels bugs.

    Dans l'exemple ci-dessous, par exemple, ton compilateur ne dira rien, par contre à l'exécution ça plantera :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    List listePieces = new LinkedList();
    listePieces.add(new ClassePasPiece());
    ((Piece)listePieces.get(i)).getCouleur();
    Alors que sinon ça plantera à la compilation donc bien plus en amont :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    List<Piece> listePieces = new LinkedList<Piece>();
    listePieces.add(new ClassePasPiece()); // IMPOSSIBLE
    PS : Pense au bouton Résolu
    Responsable Java de Developpez.com (Twitter et Facebook)
    Besoin d'un article/tutoriel/cours sur Java, consulter la page cours
    N'hésitez pas à consulter la FAQ Java et à poser vos questions sur les forums d'entraide Java
    --------
    Architecte Solution
    LinkedIn : https://www.linkedin.com/in/nicolascaudard/

  8. #8
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Janvier 2012
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Enseignement

    Informations forums :
    Inscription : Janvier 2012
    Messages : 6
    Points : 5
    Points
    5
    Par défaut
    Ouais j'avoue, mieux vaut typer

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

Discussions similaires

  1. Comment accéder aux méthodes d'un objet hors de la classe ?
    Par floating_inkpot dans le forum Windows Forms
    Réponses: 0
    Dernier message: 18/04/2010, 21h26
  2. Accès aux méthodes d'un objet dans un vector.
    Par Huruu dans le forum Débuter
    Réponses: 4
    Dernier message: 09/02/2010, 16h23
  3. [Smarty] Comment accéder aux propriétés d'un objet dans un objet ?
    Par Tanebisse dans le forum Bibliothèques et frameworks
    Réponses: 3
    Dernier message: 18/11/2008, 12h36
  4. Méthode non acceptée : ajout d'un objet dans une collection
    Par Nzs26 dans le forum VB 6 et antérieur
    Réponses: 10
    Dernier message: 09/11/2007, 19h31
  5. Réponses: 4
    Dernier message: 11/04/2007, 14h26

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