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 :

question sur les objets


Sujet :

Langage Java

  1. #1
    Membre chevronné
    Avatar de afrikha
    Profil pro
    Étudiant
    Inscrit en
    Août 2005
    Messages
    1 600
    Détails du profil
    Informations personnelles :
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Août 2005
    Messages : 1 600
    Points : 2 208
    Points
    2 208
    Par défaut question sur les objets
    bonjour tout le monde,
    est-ce que ça c'est correcte?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    while(res.next())
    		{
    			i++;
    			ligne[0]=i;
    			ligne[1]=res.getString(1);
    			ligne[2]=res.getString(2);
    			ligne[3]=res.getString(3);
    			liste.add(i-1,ligne);
    		}
    autrement dit,est-ce que l'objet se trouvant en première position de la liste est différent du second? pareque au fond il s'agit du mème objet ligne.
    est-ce que le fait de mettre un objet dans un conteneur enregistre son état?

    merci de votre aide

  2. #2
    Membre expérimenté
    Avatar de viena
    Profil pro
    Inscrit en
    Juillet 2002
    Messages
    1 071
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France, Nord (Nord Pas de Calais)

    Informations forums :
    Inscription : Juillet 2002
    Messages : 1 071
    Points : 1 512
    Points
    1 512
    Par défaut
    C'est assez difficile de répondre sans le reste du code...
    Dans l'absolue, c'est correct. Mais peut être que par rapport à ce que tu veux faire, ça ne fonctionne pas...
    Cependant, des détails :
    tu mets parfois ligne et parfois Ligne. Selon les normes habituelles, Ligne represente l'objet (la classe) et ligne l'instance. Donc, sauf si cet objet est static, tu dois toujours utiliser ligne.
    Ensuite, est ce que le res resulte d'une requete envoyant plusieurs parametres ? select a,b,c from.... Dans ce cas tout va bien. Sinon, ca ne va pas. Si elle ne renvoie d'un champs mais plusieurs enregistrement, ton code est faux...
    est-ce que le fait de mettre un objet dans un conteneur enregistre son état?
    En fait, je ne comprend pas ta question...
    En terme objet, donc reference, ce que tu auras dans ligne[1] et dans ligne[2] sera different. Cependant, il se peut que leur valeur soit la meme ("a" par exemple). Ca depend de l'environnementdans lequel tu es placé...

  3. #3
    Membre chevronné
    Avatar de afrikha
    Profil pro
    Étudiant
    Inscrit en
    Août 2005
    Messages
    1 600
    Détails du profil
    Informations personnelles :
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Août 2005
    Messages : 1 600
    Points : 2 208
    Points
    2 208
    Par défaut
    Citation Envoyé par viena
    C'est assez difficile de répondre sans le reste du code...
    Dans l'absolue, c'est correct. Mais peut être que par rapport à ce que tu veux faire, ça ne fonctionne pas...
    Cependant, des détails :
    tu mets parfois ligne et parfois Ligne. Selon les normes habituelles, Ligne represente l'objet (la classe) et ligne l'instance. Donc, sauf si cet objet est static, tu dois toujours utiliser ligne.
    oui c'est une erreur d'inattention,je corrige ça de suite.
    Ensuite, est ce que le res resulte d'une requete envoyant plusieurs parametres ? select a,b,c from.... Dans ce cas tout va bien. Sinon, ca ne va pas. Si elle ne renvoie d'un champs mais plusieurs enregistrement, ton code est faux...
    ma requete est bien un select sur 3 colonnes.
    est-ce que le fait de mettre un objet dans un conteneur enregistre son état?
    En fait, je ne comprend pas ta question...
    En terme objet, donc reference, ce que tu auras dans ligne[1] et dans ligne[2] sera different. Cependant, il se peut que leur valeur soit la meme ("a" par exemple). Ca depend de l'environnementdans lequel tu es placé...
    en fait ligne est un String[] et liste est une ArrayList.
    je vais essayer de reformuler autrement.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
     ligne={'donald','mickey'};//ligne est donc un tableau de String de longueur 2.
    liste.add(0,ligne);
    ligne[0]='dingo';
    liste.add(1,ligne);
    si je fais maintenant:
    le premier element de mon tableau sera 'donald' ou 'dingo'?

    j'espere que c'est assez clair à présent.

  4. #4
    Membre chevronné
    Profil pro
    Inscrit en
    Octobre 2005
    Messages
    949
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France

    Informations forums :
    Inscription : Octobre 2005
    Messages : 949
    Points : 1 857
    Points
    1 857
    Par défaut
    Attention, une ArrayList peut très bien contenir un tableau!

    ligne={'donald','mickey'};//ligne est donc un tableau de String de longueur 2.
    liste.add(0,ligne);

    A ce stade, liste contient un seul élément en position 0. Ce n'est ni "donald" ni "mickey" mais le tableau {'donald','mickey'}.

    ligne[0]='dingo';

    Maintenant ligne contient {"dingo", "mickey"}.

    liste.add(1,ligne);

    La liste contient maintenant {"dingo", "mickey"} à l'index 1. La liste est donc {{"donald", "mickey"}, {"dingo", "mickey"}}

    liste.get(0);
    renvoie {"donald", "mickey"}.

    Edit : Oubliez ça, je me suis trompé! C'est en fait {{"dingo", "mickey"}, {"dingo", "mickey"}} qu'on obtient.

  5. #5
    Membre chevronné
    Avatar de afrikha
    Profil pro
    Étudiant
    Inscrit en
    Août 2005
    Messages
    1 600
    Détails du profil
    Informations personnelles :
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Août 2005
    Messages : 1 600
    Points : 2 208
    Points
    2 208
    Par défaut
    ok,merci donc en fait les conteneurs stockent les etats des objets et non les objets en eux-méme.

  6. #6
    Membre confirmé
    Avatar de Glob
    Homme Profil pro
    Architecte de système d'information
    Inscrit en
    Avril 2002
    Messages
    428
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : Suisse

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

    Informations forums :
    Inscription : Avril 2002
    Messages : 428
    Points : 630
    Points
    630
    Par défaut
    Citation Envoyé par afrikha
    ok,merci donc en fait les conteneurs stockent les etats des objets et non les objets en eux-méme.
    Hello. Les conteneurs stockent des références vers les objets. Si tu modifies l'état d'un objet depuis ailleurs, il t'apparaîtra modifié si tu y accèdes depuis un conteneur quelconque.

  7. #7
    Membre chevronné
    Avatar de afrikha
    Profil pro
    Étudiant
    Inscrit en
    Août 2005
    Messages
    1 600
    Détails du profil
    Informations personnelles :
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Août 2005
    Messages : 1 600
    Points : 2 208
    Points
    2 208
    Par défaut
    ben non justement, regarde l'exemple ci-dessus: on stocke ligne dans liste,ensuite on modifie ligne puis on la stocke en seconde position,si on regarde le premier element de la liste on s'aperçoit qu'il correspond à l'etat initial de ligne

  8. #8
    Membre confirmé
    Avatar de Glob
    Homme Profil pro
    Architecte de système d'information
    Inscrit en
    Avril 2002
    Messages
    428
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : Suisse

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

    Informations forums :
    Inscription : Avril 2002
    Messages : 428
    Points : 630
    Points
    630
    Par défaut
    Hello.

    Tu as essayé de faire tourner l'exemple ci-dessus?

  9. #9
    Membre chevronné
    Profil pro
    Inscrit en
    Octobre 2005
    Messages
    949
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France

    Informations forums :
    Inscription : Octobre 2005
    Messages : 949
    Points : 1 857
    Points
    1 857
    Par défaut
    Ouh la! J'avais tout faux! Désolé.

    C'est effectivement
    {{"dingo", "mickey"}, {"dingo", "mickey"}} qu'on obtient.

  10. #10
    Membre chevronné
    Avatar de afrikha
    Profil pro
    Étudiant
    Inscrit en
    Août 2005
    Messages
    1 600
    Détails du profil
    Informations personnelles :
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Août 2005
    Messages : 1 600
    Points : 2 208
    Points
    2 208
    Par défaut
    je viens de tester,tu as totalement raison
    ça m'apprendra à étre moins paresseux et à tester

  11. #11
    Membre chevronné
    Avatar de afrikha
    Profil pro
    Étudiant
    Inscrit en
    Août 2005
    Messages
    1 600
    Détails du profil
    Informations personnelles :
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Août 2005
    Messages : 1 600
    Points : 2 208
    Points
    2 208
    Par défaut
    Citation Envoyé par BugFactory
    Ouh la! J'avais tout faux! Désolé.

    C'est effectivement
    {{"dingo", "mickey"}, {"dingo", "mickey"}} qu'on obtient.
    effectivement BugFactory tu portes bien ton pseudo

    sinon ben avec ce code:
    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
     
    import java.util.*;
     
    public class Test1
    {
    	public static void main(String[] args)
    	{
    		ArrayList liste=new ArrayList();
    		String[] ligne=new String[2];
    		String[] ligne2=new String[2];
    		ligne[0]="initial";
    		ligne[1]="toto";
    		try{
    		liste.add(0,ligne);}
    		catch(Exception e){}
    		ligne[0]="modifie";
    		liste.add(1,ligne);
    		ligne2=(String[])liste.get(0);
    		System.out.println(ligne2[0]);
    	}
    }
    j'ai un warning sur liste.add(0,ligne) et liste.add(1,ligne),le compilateur me dit unchecked call to add(int,E) as a member of the raw type java.util.ArrayList

  12. #12
    Membre chevronné
    Profil pro
    Inscrit en
    Octobre 2005
    Messages
    949
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France

    Informations forums :
    Inscription : Octobre 2005
    Messages : 949
    Points : 1 857
    Points
    1 857
    Par défaut
    Ce n'est pas grave, moi aussi j'ai posté sans tester, mais en plus moi j'ai dit que je savais avant d'écrire une grosse bêtise.

    Quand tu as écrit

    si je fais maintenant:
    le premier element de mon tableau sera 'donald' ou 'dingo'?
    J'ai cru que tu désignais par tableau liste et que tu n'avais pas compris que liste.get(0) était lui même un tableau. C'est ce sur quoi je me suis concentré dans mon exemple et je ne pensais pas à cette histoire de référence.

  13. #13
    Membre expérimenté
    Avatar de viena
    Profil pro
    Inscrit en
    Juillet 2002
    Messages
    1 071
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France, Nord (Nord Pas de Calais)

    Informations forums :
    Inscription : Juillet 2002
    Messages : 1 071
    Points : 1 512
    Points
    1 512
    Par défaut
    Citation Envoyé par afrikha
    sinon ben avec ce code:
    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
     
    import java.util.*;
     
    public class Test1
    {
    	public static void main(String[] args)
    	{
    		ArrayList liste=new ArrayList();
    		String[] ligne=new String[2];
    		String[] ligne2=new String[2];
    		ligne[0]="initial";
    		ligne[1]="toto";
    		try{
    		liste.add(0,ligne);}
    		catch(Exception e){}
    		ligne[0]="modifie";
    		liste.add(1,ligne);
    		ligne2=(String[])liste.get(0);
    		System.out.println(ligne2[0]);
    	}
    }
    j'ai un warning sur liste.add(0,ligne) et liste.add(1,ligne),le compilateur me dit unchecked call to add(int,E) as a member of the raw type java.util.ArrayList
    Je vais faire une hypothese, à verifier.
    Quand tu fais liste.add(1,ligne), tu ajoute un tableau... un tableau d'objets, mais un tableau quand meme. Or, la methode add de la classe ArrayList attend en second parametre un objet. Il est donc possible qu'il te mette ce warning pour te dire : "attention, c'est un tableau, je ne suis pas que ca va fonctionner..."
    A noter : les warning ne sont pas toujours genant... si tu es sur de ton coup, ca va. Mais bon, dans le cas contraire, il faut remettre en cause sa conception.

  14. #14
    Membre confirmé
    Avatar de Glob
    Homme Profil pro
    Architecte de système d'information
    Inscrit en
    Avril 2002
    Messages
    428
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : Suisse

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

    Informations forums :
    Inscription : Avril 2002
    Messages : 428
    Points : 630
    Points
    630
    Par défaut
    Hello.
    Je connais pas encore bien le sujet, mais je verrais un coup des generics je Java5. Essaie de déclarer ton ArrayList en spécifiant le type d'objet qui y sera inséré, pour voir...

  15. #15
    Membre chevronné
    Avatar de afrikha
    Profil pro
    Étudiant
    Inscrit en
    Août 2005
    Messages
    1 600
    Détails du profil
    Informations personnelles :
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Août 2005
    Messages : 1 600
    Points : 2 208
    Points
    2 208
    Par défaut
    Citation Envoyé par Glob
    Hello.
    Je connais pas encore bien le sujet, mais je verrais un coup des generics je Java5. Essaie de déclarer ton ArrayList en spécifiant le type d'objet qui y sera inséré, pour voir...
    c'etait ça, j'ai mis:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    ArrayList<String[]> liste=new ArrayList<String[]>();
    et maintenant plus de warning.
    Merci à tous pour votre aide

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

Discussions similaires

  1. Question sur les objets
    Par Raikyn dans le forum Débuter avec Java
    Réponses: 3
    Dernier message: 05/10/2012, 10h56
  2. Question sur les objets
    Par tosqualler dans le forum MFC
    Réponses: 8
    Dernier message: 18/01/2008, 00h01
  3. Une question sur les objets en VBA
    Par deubelte dans le forum Général VBA
    Réponses: 5
    Dernier message: 12/10/2007, 17h07
  4. Réponses: 5
    Dernier message: 24/04/2005, 04h09
  5. question de débutant sur les objets
    Par boucher_emilie dans le forum ASP
    Réponses: 3
    Dernier message: 06/08/2004, 10h51

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