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 :

Vecteur de Objects alors qu'il contient un sous-type


Sujet :

avec Java

  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    348
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2007
    Messages : 348
    Points : 103
    Points
    103
    Par défaut Vecteur de Objects alors qu'il contient un sous-type
    Bonjour,

    Je sais que le titre est assez peu explicite, alors voici mon problème précis. Je suis en train de programmer en Java un petit logiciel (console) pour gérer des zoo.

    J'ai souvent recours à des fonctions qui prennent en paramètre un vecteur qui contient des objets Zoo définis.

    Mais lorsque je veux utiliser par exemple:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    mesZoo.elementAt(i).getNom();
     
    //mesZoo le vecteur de Zoo
    //getNom() est un accesseur qui retourne un String de l'attribut Nom
    J'ai ce message d'erreur: getNom() not defined for the type Object.
    Je sais que par défaut un vecteur contient des Objects, qui sont les objets pères de Java, dont tous les objets héritent. En revanche, je n'arrive pas à pallier à ce problème qui me bloque à plusieurs endroits. Comment "convaincre" Java que ce vecteur contient bien un Zoo et non un Object?

    Merci d'avance pour vos réponses, je suis dans l'urgence, mon projet est à rendre pour mardi!

  2. #2
    Modérateur

    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    12 565
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 12 565
    Points : 21 631
    Points
    21 631
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Vector<Zoo> mesZoo = new Vector<Zoo>();
    Ceci étant dit, j'imagine que tu ne fais pas du multithread, et donc que tu n'as pas besoin de Vector, qu'il te faudrait plutôt un ArrayList.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    List<Zoo> mesZoo = new ArrayList<Zoo>();

  3. #3
    Modérateur
    Avatar de Alkhan
    Homme Profil pro
    ingénieur full stack
    Inscrit en
    Octobre 2006
    Messages
    1 232
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : ingénieur full stack

    Informations forums :
    Inscription : Octobre 2006
    Messages : 1 232
    Points : 2 061
    Points
    2 061
    Par défaut
    bonjour,

    j'ajouterais quelques précisions !

    cette formulation :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Vector<Zoo> mesZoo = new Vector<Zoo>();
    Existe depuis la version 5 c'est ce que l'on appel les génériques. En fait, cela conciste à typer un objet, qui est dans le cas présent un vecteur.
    Pour plus d'information sur les générique regarde ici.

    Maintenant pour les versions antérieur à la 5 il y a une autre solution qui consiste tous simplement a caster l'objet obtenu.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    Vector mesZoo = new Vector();
    //.....
    ((Zoo)mesZoo.elementAt(i)).getNom();

  4. #4
    Membre régulier
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    348
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2007
    Messages : 348
    Points : 103
    Points
    103
    Par défaut
    Whoa! Génial! Merci beaucoup pour m'avoir débloqué aussi vite et pour ces explications très claires!

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

Discussions similaires

  1. Réponses: 1
    Dernier message: 30/03/2015, 09h53
  2. Business Object (Infoview) - Probleme de visualisation des sous Prompt
    Par armandsoh dans le forum Launchpad (ex-Infoview)
    Réponses: 0
    Dernier message: 20/06/2011, 20h24
  3. Savoir si une table contient une sous-table
    Par EvilJajuka dans le forum Débuter
    Réponses: 7
    Dernier message: 02/10/2009, 17h15
  4. L'éditeur ne contient pas de type principal
    Par binoglobule dans le forum Eclipse Java
    Réponses: 2
    Dernier message: 25/04/2008, 10h42
  5. Compiler un fichier texte alors qu'il est ouvert sous Word
    Par Christophe Genolini dans le forum Word
    Réponses: 5
    Dernier message: 18/12/2007, 08h27

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