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 :

Pb d'appel d'objet a partir d'un autre objet


Sujet :

Langage Java

  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Février 2006
    Messages
    53
    Détails du profil
    Informations personnelles :
    Localisation : France, Isère (Rhône Alpes)

    Informations forums :
    Inscription : Février 2006
    Messages : 53
    Points : 34
    Points
    34
    Par défaut Pb d'appel d'objet a partir d'un autre objet
    bonjour,

    je n'arrive pas a acceder a une objet qui a été créé a partir d'un autre objet.
    deux trois bout de code pour m'expliquer :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    public class Principal 
    {
    	public static void main(String[] file)
    	{
    	    Groupe[] TabObject=new Groupe[1];
                  ...
    	    TabObject[1].TabParameter[0].parameter_List.add("titi");             
    	}
    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
     
     
    public class Groupe
    {
     
    	parameter[] TabParameter;
     
     
    	//constructueur de Groupe
    	Groupe()
    	{ 
    		TabParameter = new parameter[10]; 			
    	}	
     
    }
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    public class parameter 
    {
    	List parameter_List = new ArrayList();
    }
    ce que je voudrais faire mais qui ne fonctionne pas dans ma class principal
    TabObject[1].TabParameter[0].parameter_List.add("titi");
    TabObject[1].TabParameter[1].parameter_List.add("toto");

    voilà j'ai essayé de declarer de differentes manieres mais a chaque fois le compilateur ma jete.

    Quelqu'un aurais une explication a ce pb ?

    merci d'avance ....

    Sebastien

  2. #2
    Expert éminent sénior
    Avatar de Baptiste Wicht
    Homme Profil pro
    Étudiant
    Inscrit en
    Octobre 2005
    Messages
    7 431
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : Suisse

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2005
    Messages : 7 431
    Points : 21 324
    Points
    21 324
    Par défaut
    Il faut que tu déclares tes variables en public ou protected, ca dépend si toutes tes classes sont dans le meme package (protected) ou alors dans des packages différents (public) pour ques les autres classes puissent y accéder.

  3. #3
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Février 2006
    Messages
    53
    Détails du profil
    Informations personnelles :
    Localisation : France, Isère (Rhône Alpes)

    Informations forums :
    Inscription : Février 2006
    Messages : 53
    Points : 34
    Points
    34
    Par défaut
    mes classes ne font parti d'aucun package, j'ai qd meme essayé de mettre mes variables en public ou en protected mais rien n'y fait j'ai toujours l'erreur
    java.lang.NullPointerException ... (j'ai vérifié mes indices de tableau et a premiere vu rien ne cloche )

    vous auriez une autre idée ?


    Sebastien

  4. #4
    Membre régulier
    Profil pro
    Inscrit en
    Juin 2005
    Messages
    109
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2005
    Messages : 109
    Points : 122
    Points
    122
    Par défaut
    Hello,

    Tu parles de java.lang.NullPointerException. As tu initialisé le contenu de tes tableaux ? parce que ça n'apparait pas dans le code que tu as montré.

    Si tu remplaçais
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    TabObject[1].TabParameter[0].parameter_List.add("titi");
    par 3 instructions, ce serait plus façile à débugger car tu saurais quel est la ligne du pointeur null.

  5. #5
    Membre averti Avatar de dazz_x
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    269
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France, Maine et Loire (Pays de la Loire)

    Informations forums :
    Inscription : Mars 2006
    Messages : 269
    Points : 328
    Points
    328
    Par défaut
    tu as essayé :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    TabObject[1].TabParameter[0].parameter_List.add(new String("titi"));
    ?

  6. #6
    Membre émérite
    Avatar de mavina
    Homme Profil pro
    Développeur Java
    Inscrit en
    Octobre 2004
    Messages
    1 812
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : Chine

    Informations professionnelles :
    Activité : Développeur Java
    Secteur : Conseil

    Informations forums :
    Inscription : Octobre 2004
    Messages : 1 812
    Points : 2 411
    Points
    2 411
    Par défaut
    Salut,

    Essaie comme ça :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    public class Principal 
    {
    	public static void main(String[] file)
    	{
    	    Groupe[] TabObject=new Groupe[1];
                  ...
    	    TabObject[1].getTabParameter()[0].getParameter_List().add("titi");             
    	}
    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
     
     
    public class Groupe
    {
     
    	parameter[] TabParameter;
     
     
    	//constructueur de Groupe
    	Groupe()
    	{ 
    		TabParameter = new parameter[10]; 			
    	}	
     
                 public parameter[] getTabParameter()
                 {
                      return TabParameter;
                 }
     
    }
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    public class parameter 
    {
    	List parameter_List = new ArrayList();
                 public ArrayList getParameter_List()
                 {
                       return parameter_List;
                 }
    }
    Mettre ses variables en public est une solution, mais je trouve plus propre de faire des accesseurs (set et get).
    De plus, je te conseille d'être plus rigoureux sur les conventions, notemment tes noms de variables, qui ne doivent pas commencer par une majuscule, celà étant reservé aux noms de classe (même si ca compile !).

    Bien à toi

    mavina

  7. #7
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Février 2006
    Messages
    53
    Détails du profil
    Informations personnelles :
    Localisation : France, Isère (Rhône Alpes)

    Informations forums :
    Inscription : Février 2006
    Messages : 53
    Points : 34
    Points
    34
    Par défaut
    bon apres avoir décomposé en 3 instructions :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    Groupe test10 =TabObject[1];
    parameter test11 = test10.TabParameter[0];
    test11.parameter_List.add(new String("titi")); //erreur de java.lang.NullPointerException
    j'ai toujours mon erreur dans la derniere instruction .... pourtant je n'est aucun de tableau dans la derniere instruc ???

    j'ai egalement essayé TabObject[1].TabParameter[0].parameter_List.add(new String("titi"));

    mais cela ne donne rien ....

  8. #8
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Février 2006
    Messages
    53
    Détails du profil
    Informations personnelles :
    Localisation : France, Isère (Rhône Alpes)

    Informations forums :
    Inscription : Février 2006
    Messages : 53
    Points : 34
    Points
    34
    Par défaut
    mavina merci pour ton conseil pour les declarations de variable je vais corriger l'ensemble de mes sources pour etre conforme.

    pour ta proposition je viens d'essayer cela ne fonctionne pas ....



    Citation Envoyé par mavina
    Salut,

    Essaie comme ça :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    public class Principal 
    {
    	public static void main(String[] file)
    	{
    	    Groupe[] TabObject=new Groupe[1];
                  ...
    	    TabObject[1].getTabParameter()[0].getParameter_List().add("titi");             
    	}
    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
     
     
    public class Groupe
    {
     
    	parameter[] TabParameter;
     
     
    	//constructueur de Groupe
    	Groupe()
    	{ 
    		TabParameter = new parameter[10]; 			
    	}	
     
                 public parameter[] getTabParameter()
                 {
                      return TabParameter;
                 }
     
    }
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    public class parameter 
    {
    	List parameter_List = new ArrayList();
                 public ArrayList getParameter_List()
                 {
                       return parameter_List;
                 }
    }
    Mettre ses variables en public est une solution, mais je trouve plus propre de faire des accesseurs (set et get).
    De plus, je te conseille d'être plus rigoureux sur les conventions, notemment tes noms de variables, qui ne doivent pas commencer par une majuscule, celà étant reservé aux noms de classe (même si ca compile !).

    Bien à toi

    mavina

  9. #9
    Membre émérite
    Avatar de mavina
    Homme Profil pro
    Développeur Java
    Inscrit en
    Octobre 2004
    Messages
    1 812
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : Chine

    Informations professionnelles :
    Activité : Développeur Java
    Secteur : Conseil

    Informations forums :
    Inscription : Octobre 2004
    Messages : 1 812
    Points : 2 411
    Points
    2 411
    Par défaut
    je n'ai pas testé, j'ai fait ça de tete, il est possible que j'ai fait une erreur sans m'en rendre compte (je ne peux pas compiler pour vérifier).
    Que te dit le compilateur ??

    mavina

  10. #10
    Membre émérite
    Avatar de mavina
    Homme Profil pro
    Développeur Java
    Inscrit en
    Octobre 2004
    Messages
    1 812
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : Chine

    Informations professionnelles :
    Activité : Développeur Java
    Secteur : Conseil

    Informations forums :
    Inscription : Octobre 2004
    Messages : 1 812
    Points : 2 411
    Points
    2 411
    Par défaut
    ah oui, forcément, nullpointerexception.

    tiens :
    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
     
    public class Groupe
    {
     
    	parameter[] TabParameter;
     
     
    	//constructueur de Groupe
    	Groupe()
    	{ 
    		TabParameter = new parameter[10];
                              for(int i=0;i<TabParameter.length;i++)
                              {
                                    TabParameter[i]=new parameter();
                              } 			
    	}	
     
                 public parameter[] getTabParameter()
                 {
                      return TabParameter;
                 }
     
    }
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    public class Principal 
    {
    	public static void main(String[] file)
    	{
    	    Groupe[] TabObject=new Groupe[1];
                     for(int i=0;i<TabObject.length;i++)
                     {
                           TabObject[i]=new Groupe();
                     }
    	    TabObject[1].getTabParameter()[0].getParameter_List().add("titi");
    	}
    }
    tu avais en fait oublié d'instancier les cases de tes tableaux (instancier un tableau ne veut aps dire instancier ses cases).

  11. #11
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Février 2006
    Messages
    53
    Détails du profil
    Informations personnelles :
    Localisation : France, Isère (Rhône Alpes)

    Informations forums :
    Inscription : Février 2006
    Messages : 53
    Points : 34
    Points
    34
    Par défaut
    le compilo me dit : java.lang.NullPointerException.

    votre proposition compile il y avait juste une erreur dans
    public List getParameter_List() qui retourne une List et non une ArrayList.

  12. #12
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Février 2006
    Messages
    53
    Détails du profil
    Informations personnelles :
    Localisation : France, Isère (Rhône Alpes)

    Informations forums :
    Inscription : Février 2006
    Messages : 53
    Points : 34
    Points
    34
    Par défaut
    mavina ta derniere propostion etait la bonne , merci beaucoup d'avoir pris un peu de ton temps pour m'indiquer la solution
    (je n'y avais vraiment vraiment pas pensé)

    merci aux autres "forumeurs" egalement.

    bonne journée a tous


    Sébastien.

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

Discussions similaires

  1. Appel d'une méthode à partir d'une autre page
    Par mona dans le forum ASP.NET
    Réponses: 9
    Dernier message: 15/09/2007, 23h52
  2. Réponses: 1
    Dernier message: 04/04/2007, 10h05
  3. Appel d'un projet à partir d'un autre
    Par kazhar dans le forum VB.NET
    Réponses: 2
    Dernier message: 26/02/2007, 10h16
  4. Appel d'un constructeur à partir d'un autre
    Par Pragmateek dans le forum Langage
    Réponses: 28
    Dernier message: 18/06/2006, 01h07
  5. comment appeler une requete a partir d'une autre ?
    Par DjBeGi dans le forum Access
    Réponses: 2
    Dernier message: 01/06/2006, 14h39

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