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

Développement Web en Java Discussion :

Récupérer valeur d'une variable d'une autre classe


Sujet :

Développement Web en Java

  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Août 2010
    Messages
    44
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2010
    Messages : 44
    Points : 33
    Points
    33
    Par défaut Récupérer valeur d'une variable d'une autre classe
    Bonjour,

    j'ai un problème d'ordre technique. En effet, dans une classe A, j'ai des méthodes qui traitent d'une liste.

    Or, dans une classe B, j'ai besoin de récupérer cette liste pour faire x traitement.

    Comment puis-je donc récupérer les valeurs de cette liste ?

    Je sui débutant en Java donc j'ai du mal.

    Merci pour votre aide.

  2. #2
    Expert confirmé
    Avatar de slim_java
    Homme Profil pro
    Enseignant
    Inscrit en
    Septembre 2008
    Messages
    2 272
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Enseignant
    Secteur : Enseignement

    Informations forums :
    Inscription : Septembre 2008
    Messages : 2 272
    Points : 4 539
    Points
    4 539
    Par défaut
    Citation Envoyé par toMuch Voir le message

    Or, dans une classe B, j'ai besoin de récupérer cette liste pour faire x traitement.
    tu passe cette liste en paramètre du constructeur de la classe B

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Janvier 2009
    Messages
    299
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Janvier 2009
    Messages : 299
    Points : 422
    Points
    422
    Par défaut
    Tu peux aussi utiliser un getter.

    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
     
    public Class A {
      private List<String> liste;
     
      // constructeur
      public A(){
        ....
      }
     
      public List<String> getListe(){
        return liste;
      }
    }
     
    public Class B {
      public void utilisationListeA(){
        A a = new A();
        List<String> liste = a.getListe();
        ... ...
      }
    }

  4. #4
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Août 2010
    Messages
    44
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2010
    Messages : 44
    Points : 33
    Points
    33
    Par défaut
    Je veux bien mais j'ai du mal à comprendre comment il peut savoir que c'est cette liste qu'il doit récupérer ?

    Classe A :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    public class A{
    List list1 = new Arraylist()
    List list2 = new Arraylist()
     
    ... On alimente ces listes.
    }
    Tu veux que dans le constructeur de cette classe, je récupère la liste1 dont j'ai besoin, donc :

    Classe B :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    public class B{
     
      private B(List list){
      list = list;
    }
     
    }
    Mais comment cela marche ? Je ne comprend pas en fait. Comment je peux savoir que c'est bien ma liste 1 que j'ai récupéré.

    Désolé pour cette question qui peut être bête...

  5. #5
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Août 2010
    Messages
    44
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2010
    Messages : 44
    Points : 33
    Points
    33
    Par défaut
    En fait, j'avais effectivement fait comme Caalador a dit.

    Cependant, en vérifiant la liste que j'ai récupérer via le get dans ma classe B, cette dernière est à nulle alors qu'elle devrait être "alimentée" via les précédentes méthodes se trouvant dans la classe A.

    C'est normal ?

  6. #6
    Expert confirmé
    Avatar de slim_java
    Homme Profil pro
    Enseignant
    Inscrit en
    Septembre 2008
    Messages
    2 272
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Enseignant
    Secteur : Enseignement

    Informations forums :
    Inscription : Septembre 2008
    Messages : 2 272
    Points : 4 539
    Points
    4 539
    Par défaut
    Citation Envoyé par toMuch Voir le message
    Comment je peux savoir que c'est bien ma liste 1 que j'ai récupéré.
    c'est toi le programmeur
    tu connais les type de parémtres suivant l'ordre que tu as définie dans les signatures (entétes)

  7. #7
    Membre averti
    Profil pro
    Inscrit en
    Janvier 2009
    Messages
    299
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Janvier 2009
    Messages : 299
    Points : 422
    Points
    422
    Par défaut
    Pour ce qui est de "comment savoir qu'elle liste il retourne" en utilisant un getter, c'est à toi de le définir, voir même de faire 2 getters :
    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
    public class A{
      List list1 = new Arraylist()
      List list2 = new Arraylist()
     
      // Constructeur
      public A(){
        ... On alimente ces listes.
      }
     
      // Getters
      public List getList1(){
        return list1;
      }
     
      public List getList2(){
        return list2;
      }
     
    }
    Pour ton problème de null il peut y avoir pas mal de raison, il faudrait que tu montres ton code.
    Dans tes exemples je vois une erreur, mais c'est peut-être une faute de frappe :
    list = list; => this.list = list;
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    public class B{
      private List list;
     
      private B(List list){
        this.list = list;
      }
     
    }
    Sinon autre conseil qui n'a rien à voir, utilise les générics c'est bien pratique, par exemple ca évite des cast ou alors tout simplement d'avoir plein de warning dans l'EDI, ...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    List<TypeDeClass>
    List<String>
    List<A>
    List<Toto> ...

  8. #8
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Août 2010
    Messages
    44
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2010
    Messages : 44
    Points : 33
    Points
    33
    Par défaut
    Ma classe A avec ma liste que j'alimente :

    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
     
    public class A{
    protected List listSelect = new ArrayList();
     
    public void selected(){
     
    		Var mySelect = (Var) extendedDataTable.getRowData();
     
    		if(!listSelect.contains(mySelect)){
    			listSelect.add(extendedDataTable.getRowData());
    		}
    		else {
    			listSelect.remove(mySelect);
    		}
     
    		System.out.println(listSelect);
    	}
    }
    Ma classe B où je souhaite récupérer cette liste "listSelect" :

    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
    public class B extends A {
    	
    	
    	public void objetSelect(Object o) {
    		
                    System.out.println(listSelect);  ===> me renvoie null malgré que dans la classe A cette liste est alimentée.
    		monObjet = o;
    		selectedVar = null;
    		
    		if(monObjet.getClass().equals(Table.class))
    		{
    			Table maTable = (Table) monObjet;
    			
    			try{
    				detailedVar = getService().getVar(maTable.getId());
    Dans mon cas, j'ai fait un "extend" de la classe A dans la classe B.

    Je ne vois pas d'où peut venir l'erreur...

  9. #9
    Membre averti
    Profil pro
    Inscrit en
    Janvier 2009
    Messages
    299
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Janvier 2009
    Messages : 299
    Points : 422
    Points
    422
    Par défaut
    Attention, ce n'est pas parce que ta class extend A que la variable qu'elle lit est la bonne.
    Si elle étend A, ca veut dire qu'elle contient elle aussi une variable portant le même nom. Après il faut que tu fasses attentions aux instances de class.
    Dans ta class B tu lis la variable listSelect de ta class B et pas celle de ta classe A.
    Il faut que tu utilises l'instance de ta class A.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    // si tu choisis la solution d'un getter
    A class_a = new A();
    listSelect = class_a.getListSelect(); 
     
    // si tu choisis la solution du constructeur avec paramètre, il faudra créer ta class B depuis la A
    B class_B = new B(listSelect);

  10. #10
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Août 2010
    Messages
    44
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2010
    Messages : 44
    Points : 33
    Points
    33
    Par défaut
    Au fait, merci Caalador !

    J'ai enfin réussi à faire ce que je voulais faire.

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

Discussions similaires

  1. Réponses: 6
    Dernier message: 16/06/2011, 12h45
  2. transmission des valeurs d'une variable d'une fonction a une autre
    Par Invité dans le forum GTK+ avec C & C++
    Réponses: 7
    Dernier message: 22/07/2009, 23h05
  3. Réponses: 0
    Dernier message: 21/01/2009, 13h52
  4. Réponses: 10
    Dernier message: 20/06/2007, 18h02
  5. [debutant]passager une variable d'une page a une autre
    Par Eisy dans le forum Général JavaScript
    Réponses: 5
    Dernier message: 17/03/2006, 11h18

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