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 :

remplir une liste d'objets


Sujet :

avec Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Inscrit en
    Novembre 2007
    Messages
    69
    Détails du profil
    Informations forums :
    Inscription : Novembre 2007
    Messages : 69
    Par défaut remplir une liste d'objets
    Bonjour tout le monde,
    je veux créer une liste d'objets donc j'ai écrit le code suivant:
    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
    private static void tester_objet() {
    		// TODO Auto-generated method stub
    		ArrayList<Object> a=new ArrayList<Object>();
     
    		for(int i=1;i<=3;i++)
    		{
    			Object O=new Object(i,i,"i");
     
    			a.add(O);
    		}
    	for(int j=0;j<a.size();j++)
    		{
    			System.out.println(a.get(j).x+" "+a.get(j).y+" "+a.get(j).name);
    		}
     
    	}
     
    }
    Lors de l'affichage, j'ai eu le contenu du dernier objet créé qui se répète 3 fois:
    3 3 i
    3 3 i
    3 3 i
    Y a t-il quelqu'un qui peut m'expliquer la raison pour laquelle j'ai eu ce résultat
    Merci

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

    Informations forums :
    Inscription : Mai 2005
    Messages : 1 599
    Par défaut
    Cela vient de ta classe "Object". J'imagine que c'est une classe à toi puisque le constructeur Object(int, int, String) n'existe pas.

    Si on teste avec une autre classe, ce code affiche bien
    1
    2
    3
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    private static void tester_objet() {
            ArrayList<Object> a=new ArrayList<Object>();
            for(int i=1;i<=3;i++)
            {
                Object O=new Integer(i);
     
                a.add(O);
            }
            for(int j=0;j<a.size();j++)
            {
                System.out.println(a.get(j));
            }
    }

  3. #3
    Membre confirmé
    Homme Profil pro
    Nom
    Inscrit en
    Juin 2006
    Messages
    90
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Doubs (Franche Comté)

    Informations professionnelles :
    Activité : Nom

    Informations forums :
    Inscription : Juin 2006
    Messages : 90
    Par défaut
    L'erreur vient probablement du constructeur de ton objet, avec le code suivant, il n'y a aucun probleme.
    Tache également de bien nommer tes variables, tes méthodes avec des noms qui portent un sémantique bien précise, et utilise à chaque fois les types appropriés...

    un exemple:

    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
    21
    22
    23
    24
    25
    26
     
    private static class Obj {
            public final Integer elementX;
            public final Integer elementY;
            public final String name;
     
            private Obj(final int x,final  int y,final  String name) {
                elementX = x;
                elementY = y;
                this.name = name;
            }
     
            private String render(){
                return valueOf(elementX) + ',' + valueOf(elementY) + ',' + name;
            }
        }
     
        public static void tester() {
            final Collection<Obj> liste = new ArrayList<Obj>();
            for (int i = 1; i <= 3; i++) {
                liste.add(new Obj(i, i, "i"));
            }
            for (final Obj element : liste) {
                System.out.println(element.render());
            }
        }

  4. #4
    Membre confirmé
    Inscrit en
    Novembre 2007
    Messages
    69
    Détails du profil
    Informations forums :
    Inscription : Novembre 2007
    Messages : 69
    Par défaut
    onjour, le problème est résolu.
    En fait, les variables x,y,name étaient définis static.
    je ne comprend pas l'effet de Staic sur les variables.

    Merci de me l'expliquer

  5. #5
    Membre confirmé
    Inscrit en
    Novembre 2007
    Messages
    69
    Détails du profil
    Informations forums :
    Inscription : Novembre 2007
    Messages : 69
    Par défaut
    je veux dire que les variables statics x,y,name de la classe Objet causaient le problème mais je ne comprend pas pourquoi.

  6. #6
    Membre éclairé
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    802
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 802
    Par défaut
    Un attribut static est une variable de classe, elle est unique pour toutes les instances (objets) de la classe.

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

Discussions similaires

  1. Remplir une List<T>/un objet avec une DataTable.
    Par AquaTuba dans le forum C#
    Réponses: 11
    Dernier message: 04/11/2013, 15h32
  2. Réponses: 0
    Dernier message: 21/04/2009, 13h30
  3. Remplir une Liste par SQL ?
    Par Zigouigoui dans le forum Requêtes et SQL.
    Réponses: 9
    Dernier message: 03/12/2005, 17h08
  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