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

Langage Java Discussion :

Vecteur d'objets et methodes


Sujet :

Langage Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    83
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 83
    Par défaut Vecteur d'objets et methodes
    Bonjour,

    je me retrouve face a un petit problème concernant les vecteurs d'objet.

    J'ai un vecteur d'objet tab_objet de type objet

    le probleme est que je n'arrive pas a acceder aux methodes des objets contenus dans le vecteur

    par exemple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    for (int i = 0 ; i < tab_objet.size(); i++){
                    tab_objet.elementAt(i).affichage();
                   }
    affichage est une methode public presente dans la classe objet, et ca ne fonctionne pas.

    l'erreur est : No accessible method with signature "affichage()" was found in type "java.lang.Object".

    J'aimerai savoir ce que retourne tab_objet.elementAt(i) car visiblement ce n'est pas l'objet que je veux...

    Merci par avance pour vos reponse

  2. #2
    Membre éclairé
    Inscrit en
    Novembre 2006
    Messages
    630
    Détails du profil
    Informations forums :
    Inscription : Novembre 2006
    Messages : 630
    Par défaut
    salut
    quels sont les parametre de la méthode affichage();
    la méthode dois avoir des paramétres

  3. #3
    Expert éminent
    Avatar de adiGuba
    Homme Profil pro
    Développeur Java/Web
    Inscrit en
    Avril 2002
    Messages
    13 938
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Java/Web
    Secteur : Transports

    Informations forums :
    Inscription : Avril 2002
    Messages : 13 938
    Billets dans le blog
    1
    Par défaut
    Salut,

    C'est normal car l'instance que tu récupères est déclaré comme un Object et donc il faut que tu castes :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    for (int i = 0 ; i < tab_objet.size(); i++){
                    ( (TaClasse) tab_objet.elementAt(i) ).affichage();
    }
    Ou sinon à partir de Java 5.0 tu peux utiliser les Generics pour t'éviter ce genre de cast

    a++

    PS : Et tu devrais utiliser une ArrayList plutôt qu'un Vector : c'est la même chose en non-synchronisé et du coup plus rapide

  4. #4
    Membre éprouvé
    Avatar de Janitrix
    Inscrit en
    Octobre 2005
    Messages
    3 391
    Détails du profil
    Informations forums :
    Inscription : Octobre 2005
    Messages : 3 391
    Par défaut
    Peux tu nous montrer le code où tu crées ton Vecteur ? De plus, je te conseil d'utiliser plutot un ArrayList, plus moderne et avec de meilleur performance.
    Si tu es sous Java 5, tu peux déclarer le type d'objet que ton vecteur va contenir, comme ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Vecteur<String> myStrings = new Vecteur<String>();
    myStrings.add("Ceci est un string rouge ;)");
    myStrings.elementAt(0).substring(8, 10);
    Je n'ai pas besoin de convertir le retour de elementAt car j'ai dis que ce serai des String. Bonne chance.

    Edit : haha 3 réponses en 3 minutes

  5. #5
    Membre éclairé
    Inscrit en
    Novembre 2006
    Messages
    630
    Détails du profil
    Informations forums :
    Inscription : Novembre 2006
    Messages : 630
    Par défaut
    au lieu de mettre ça
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    for (int i = 0 ; i < tab_objet.size(); i++){
                    tab_objet.elementAt(i).affichage();
                   }

    essaie
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    Arraylist tab_objet = new Arraylist();
    for (int i = 0 ; i < tab_objet.size(); i++){
                    tab_objet.get(i).affichage();
                   }
    mais affichage c'est une méthode qui doit avoir des paramétres car d'apres que j'ai compris tu veux afficher résultat de la list tab_objet par la méthode affichage au lieux d'utiliser
    System.out.println(Q); avec String Q= tab_objet.get(i).toString;

  6. #6
    Membre confirmé
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    83
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 83
    Par défaut
    Merci beaucoup ca marche au poil, 4 reponses en 1/2 heure c'est vraiment extra !!!!

    Je vais suivre vos conseils et utiliser une array_list

    merci encore

  7. #7
    Modérateur
    Avatar de OButterlin
    Homme Profil pro
    Inscrit en
    Novembre 2006
    Messages
    7 313
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 7 313
    Billets dans le blog
    1
    Par défaut
    Depuis quand affichage() est une méthode d'Object ?
    Comme l'a dit adiGuba, il faut faire un cast de l'objet (implicite depuis la 1.5 ou explicite)
    Bref, si 1.5 ou plus, tu peux construire le vecteur comme ceci
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    Vector<LeTypeObjet> v = new Vector<LeTypeObjet>();
     
    et là tu pourras faire
     
    v.elementAt(i).affichage();
     
    Sinon version < 1.5
     
    Vector v = new Vector();
     
    ((LeTypeObjet)v.elementAt(i)).affichage();
    A+
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  8. #8
    Membre émérite Avatar de g_rare
    Profil pro
    Inscrit en
    Novembre 2005
    Messages
    608
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2005
    Messages : 608
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    // il est preferable d'utiliser un Iterator pour parcourir un Vector [voir FAQ]
    for (int i = 0 ; i < tab_objet.size(); i++){
      // on caste l'element du Vector (instance de java.lang.Object) en "Objet" [voir FAQ]
      Objet objet = (Objet)tab_objet.elementAt(i);
      // la methode est declaree pour ce "type" d'Objet
      objet.affichage();
    }

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

Discussions similaires

  1. Vecteur d' objets
    Par Mookie dans le forum Langage
    Réponses: 4
    Dernier message: 30/09/2006, 20h00
  2. objet Connection methode execute id insert
    Par totoche dans le forum VB 6 et antérieur
    Réponses: 3
    Dernier message: 13/09/2006, 17h01
  3. Script objet avant methode formulaire?
    Par le_gueux dans le forum 4D
    Réponses: 17
    Dernier message: 17/07/2006, 16h46
  4. Réponses: 4
    Dernier message: 30/01/2006, 04h08
  5. [MFC] Manipuler un vecteur d'objets
    Par Yellowmat dans le forum MFC
    Réponses: 4
    Dernier message: 13/07/2005, 15h37

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