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 :

Accès aux attributs d'un objet


Sujet :

avec Java

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Septembre 2005
    Messages
    70
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2005
    Messages : 70
    Points : 53
    Points
    53
    Par défaut Accès aux attributs d'un objet
    Bonjour,

    j'ai un ArrayList "LIST" conteant des objets "PRODUITS" construits à partir de 3 attributs "a", "b", "c" de types "String". Je sais extraire l'objet de l'ArrayList en fesant produit.get(int i) avec i étant l'index recherché.

    Mais voilà mon soucis, je ne maîtrise pas la longueur de chaine des attributs (ils varient, ils sont passés en paramètres et proviennent d'un composant graphique de type textField). Et je souhaiterais accéder au 3è attribut de l'objet que j'ai extrait.

    Quand je sors mon objet, j'utilise la méthode toString pour convertir en chaine de caractère, mais ça ne m'avance pas, comment détecter le 3è attribut qui avec le toString est transformé en chaine de caractère et collé aux deux premiers attributs !?

    Merci.

  2. #2
    Membre chevronné
    Avatar de CheryBen
    Inscrit en
    Mai 2005
    Messages
    1 599
    Détails du profil
    Informations personnelles :
    Âge : 42

    Informations forums :
    Inscription : Mai 2005
    Messages : 1 599
    Points : 2 197
    Points
    2 197
    Par défaut
    Bonjour, la meilleure solution est de ne pas concaténer ces 3 attributs et de les laisser séparés dans la classe PRODUIT, en quoi est-ce gênant? Ensuite il suffira de faire :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    Produit p = liste.get(i);
    String a = p.getA();
    String b = p.getB();
    String c = p.getC();

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Septembre 2005
    Messages
    70
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2005
    Messages : 70
    Points : 53
    Points
    53
    Par défaut
    Bein ça me fonctionne pas : ce serait l'idéal mais NetBeans me marque une erreur : il faudrait plutôt que j'écrive Produit p = new Produit();

    Là, il me dit que liste.get(i) n'est pas dans le package Produit.

  4. #4
    Membre chevronné
    Avatar de CheryBen
    Inscrit en
    Mai 2005
    Messages
    1 599
    Détails du profil
    Informations personnelles :
    Âge : 42

    Informations forums :
    Inscription : Mai 2005
    Messages : 1 599
    Points : 2 197
    Points
    2 197
    Par défaut
    Je ne connais pas ton code, ce que j'ai donné n'était qu'un exemple.

    L'erreur que tu indiques ne veut rien dire, peux-tu donner la phrase exacte? et ton code? quelle version du jdk utilises-tu, 1.5?

  5. #5
    Membre du Club
    Profil pro
    Inscrit en
    Septembre 2005
    Messages
    70
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2005
    Messages : 70
    Points : 53
    Points
    53
    Par défaut
    La phrase exacte : incompactibles types - found: java.lang.Object - required: Produit

    Pour la version du jdk, c'est une récente, je sais pas encore où trouver cet info, je débute.

    Merci

  6. #6
    Membre confirmé Avatar de miloux32
    Profil pro
    Inscrit en
    Juillet 2003
    Messages
    545
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2003
    Messages : 545
    Points : 565
    Points
    565
    Par défaut
    Citation Envoyé par JeanMi66 Voir le message
    La phrase exacte : incompactibles types - found: java.lang.Object - required: Produit

    Pour la version du jdk, c'est une récente, je sais pas encore où trouver cet info, je débute.

    Merci
    pour la version, si tu compiles en ligne de commande tu fais "java --version"

    sinon si tu utilises un truc style Eclipse, y'a un item dans le menu qui permet de voir le JRE installé
    C'est pas parce que ca marche que c'est bon!!
    Pensez au bouton "Résolu"
    Je ne réponds pas en privé aux questions

  7. #7
    Membre chevronné
    Avatar de CheryBen
    Inscrit en
    Mai 2005
    Messages
    1 599
    Détails du profil
    Informations personnelles :
    Âge : 42

    Informations forums :
    Inscription : Mai 2005
    Messages : 1 599
    Points : 2 197
    Points
    2 197
    Par défaut
    Montre nous ton code stp, sans ça, ça va être dur de t'aiguiller.

    En tout cas, ta liste n'est pas "typée", donc soit tu as un warning, soit tu utilises un jdk antérieur à la version 1.5.

    Tu peux faire :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Produit p = (Produit)liste.get(i);

  8. #8
    Membre du Club
    Profil pro
    Inscrit en
    Septembre 2005
    Messages
    70
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2005
    Messages : 70
    Points : 53
    Points
    53
    Par défaut
    Super, cette dernière solution fonctionne parfaitement !!!! Merci beaucoup !

    Mais étant débutant, je pensais que les ArrayList s'écrivaient uniquement de la manière suivante : ArrayList p = new ArrayList();

    Or ici dans Produit p = (Produit)liste.get(i); je ne vois pas le new !? Quelle est cette construction, pourriez-vous m'expliquer un peu svp ???

    Merci d'avance.

    PS : mon jdk : 1.6.0

  9. #9
    Membre chevronné
    Avatar de CheryBen
    Inscrit en
    Mai 2005
    Messages
    1 599
    Détails du profil
    Informations personnelles :
    Âge : 42

    Informations forums :
    Inscription : Mai 2005
    Messages : 1 599
    Points : 2 197
    Points
    2 197
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Produit p = (Produit)liste.get(i);
    Cette instruction ne créé pas d'ArrayList, elle récupère simplement un élément contenu dans l'ArrayList liste. Cet élément récupéré est ici de type Object, et on le cast en tant que Produit (qui hérite implicitement de Object). L'inconvénient de cette forme est que si la liste contient autre chose qu'un Produit, il va y avoir une ClassCastException.

    Pour éviter ce genre d'erreur, le jdk1.5 et donc 1.6 permettent de typer l'ArrayList, et de faire comme ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    ArrayList<Produit> liste = new ArrayList<Produit>();
    [...] // ajout d'éléments dans la liste
    Produit p = liste.get(i);
    Ici la liste ne peut contenir que des Produit, le compilateur ne permettra pas d'ajouter autre chose, et donc ce que l'on récupère (via la méthode get) est forcément du type Produit, le cast devient inutile. Il faudrait déclarer ta liste comme ce dernier exemple.

  10. #10
    Membre du Club
    Profil pro
    Inscrit en
    Septembre 2005
    Messages
    70
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2005
    Messages : 70
    Points : 53
    Points
    53
    Par défaut
    Ok, merci, j'ai compris. Clair, net et précis. Efficace surtout.

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

Discussions similaires

  1. problème d'acces aux attributs d'un objet [arduino].
    Par Luke spywoker dans le forum Débuter
    Réponses: 11
    Dernier message: 18/09/2013, 20h02
  2. Simulation de POO : accès aux attributs privés d'un objet
    Par Bleys dans le forum Général JavaScript
    Réponses: 12
    Dernier message: 16/12/2010, 21h24
  3. [POO] Acces aux attributs d'un objet depuis une methode evenement :s
    Par NikoGJ dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 13/07/2006, 19h01
  4. Accès aux attributs d'une balise HTML
    Par tatou42 dans le forum Général JavaScript
    Réponses: 6
    Dernier message: 09/02/2006, 14h01
  5. [DOM] Accès aux attributs d'un noeud
    Par vasilov dans le forum Format d'échange (XML, JSON...)
    Réponses: 8
    Dernier message: 13/07/2005, 14h19

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