JAVA : recuperer une variable qui a été set
lionheartilly
Messages postés
3
Date d'inscription
Statut
Membre
Dernière intervention
-
KX Messages postés 16761 Date d'inscription Statut Modérateur Dernière intervention -
KX Messages postés 16761 Date d'inscription Statut Modérateur Dernière intervention -
Bonjour,
Je viens de débuter en JAVA.
Mon problème : recupperer dans une classe, une variable qui a été set dans une autre classe. J'arrive à la récuppérer, mais elle n'est pas à la valeur que je venait de set, elle est réinitialisée à 0. pourquoi ?
Je vous explique vite fait les liens entre mes classes (je réécris pas tout le blabal des constructeurs etc...)
Class Main
{
ClassA a = new ClassA();
a.setVariable(valeur_desiree);
ClassB b = new ClassB();
b.getVariable();
}
ClassA
{
int variable;
public void setVariable(valeur_desiree)
{
variable = valeur_desiree;
}
public int getVariable()
{
return variable;
}
}
ClassB
{
ClassA a = new ClassA();
int valeur_recuperee = a.getVariable();
int nouvelle_valeur = valeur_recuperee + 10;
}
Donc par exemple si dans ma class Main j'ai appelé la classA pour set ma variable à 5, puis j'appelle ma classB qui elle recupère la variable dans la classA (qui devrait donc etre égale à 5 vu qu'on vient de la set), et bien ça ne marche pas, je n'arrive pas à récuperer 5 mais 0, comme si variable avait été réinitialisée. Comment faire pour récuperer correctement la valeur de la variable qui vient d'etre modifiée ?
Merci =)
Je viens de débuter en JAVA.
Mon problème : recupperer dans une classe, une variable qui a été set dans une autre classe. J'arrive à la récuppérer, mais elle n'est pas à la valeur que je venait de set, elle est réinitialisée à 0. pourquoi ?
Je vous explique vite fait les liens entre mes classes (je réécris pas tout le blabal des constructeurs etc...)
Class Main
{
ClassA a = new ClassA();
a.setVariable(valeur_desiree);
ClassB b = new ClassB();
b.getVariable();
}
ClassA
{
int variable;
public void setVariable(valeur_desiree)
{
variable = valeur_desiree;
}
public int getVariable()
{
return variable;
}
}
ClassB
{
ClassA a = new ClassA();
int valeur_recuperee = a.getVariable();
int nouvelle_valeur = valeur_recuperee + 10;
}
Donc par exemple si dans ma class Main j'ai appelé la classA pour set ma variable à 5, puis j'appelle ma classB qui elle recupère la variable dans la classA (qui devrait donc etre égale à 5 vu qu'on vient de la set), et bien ça ne marche pas, je n'arrive pas à récuperer 5 mais 0, comme si variable avait été réinitialisée. Comment faire pour récuperer correctement la valeur de la variable qui vient d'etre modifiée ?
Merci =)
A voir également:
- JAVA : recuperer une variable qui a été set
- Waptrick java football - Télécharger - Jeux vidéo
- Jeux java itel - Télécharger - Jeux vidéo
- Eclipse java - Télécharger - Langages
- Java apk - Télécharger - Langages
- Waptrick java voiture - Télécharger - Jeux vidéo
4 réponses
Plusieurs façon de faire.
Mais si l'on fait new ClassA(), cela crée une nouvelle instance de classe.
Si dans le constructeur de la classe A, rien n'ai fait pour mettre la variable à une autre valeur que 0, alors il est normal de récupérer 0.
De plus, cela fait 3 classe alors qu'une seule aurait suffit. Parce que tel quel, sans explication, avoir 3 classes pour faire ça ne sert strictement à rien.
Mais si l'on fait new ClassA(), cela crée une nouvelle instance de classe.
Si dans le constructeur de la classe A, rien n'ai fait pour mettre la variable à une autre valeur que 0, alors il est normal de récupérer 0.
De plus, cela fait 3 classe alors qu'une seule aurait suffit. Parce que tel quel, sans explication, avoir 3 classes pour faire ça ne sert strictement à rien.
Merci de ta réponse.
C'est bien ce que je pensais, que refaire un new Class relançait une nouvelle instance donc ramenait les variables à leur valeur de base (ici 0).
Donc si je comprends bien, il faut que dans le constructeur de ma classA, il faut que je fasse un truc genre :
this.valeur = valeur;
Comme ça, quand je relance new ClassA à partir de ClassB, je récupérerai la variable avec la valeur set ?
Ou alors est-ce que dans ClassB, il n'y a pas un autre moyen de faire appel à classA sans créer une nouvelle instance ? Voire directement appeler la methode getVariable de ClassA directement dans classB ?
Sinon mes différentes classes sont plus complexes que ça, ne t'inquiètes pas, j'ai juste résumé le problème. Oui, il n'y aurait pas d'interet à créer 3 classes juste pour faire une opération débile =)
C'est bien ce que je pensais, que refaire un new Class relançait une nouvelle instance donc ramenait les variables à leur valeur de base (ici 0).
Donc si je comprends bien, il faut que dans le constructeur de ma classA, il faut que je fasse un truc genre :
this.valeur = valeur;
Comme ça, quand je relance new ClassA à partir de ClassB, je récupérerai la variable avec la valeur set ?
Ou alors est-ce que dans ClassB, il n'y a pas un autre moyen de faire appel à classA sans créer une nouvelle instance ? Voire directement appeler la methode getVariable de ClassA directement dans classB ?
Sinon mes différentes classes sont plus complexes que ça, ne t'inquiètes pas, j'ai juste résumé le problème. Oui, il n'y aurait pas d'interet à créer 3 classes juste pour faire une opération débile =)
Je crois que j'ai trouvé :
il faut que je déclare static la variable dans ma classA.
Comme ça, quand je la set une fois dans mon Main, puis que je la get dans ma classB, la variable restera égale à la valeur que j'avais définie dans mon set.
(je peux pas le tester maintenant, j'ai pas eclipse sur le pc ou je suis, mais merci de me confirmer si c'est ça qu'il faut faire.)
il faut que je déclare static la variable dans ma classA.
Comme ça, quand je la set une fois dans mon Main, puis que je la get dans ma classB, la variable restera égale à la valeur que j'avais définie dans mon set.
(je peux pas le tester maintenant, j'ai pas eclipse sur le pc ou je suis, mais merci de me confirmer si c'est ça qu'il faut faire.)
Je crois que tu n'as pas encore bien la notion d'objet.
"relançait une nouvelle instance donc ramenait les variables à leur valeur de base"
Ce ne sont pas les mêmes variables ! Chaque objet aura ses variables propres, donc faire un set sur un objet ne modifiera pas les valeurs sur les autres objets... ou alors il faut utiliser des variables statiques, mais est-ce que c'est ce que tu veux !?
Pour mieux comprendre ton problème, pourrais-tu refaire ton code en Java correct ?
Parce que là je suis un peu perdu avec ton pseudo-code, j'ai du mal à voir si ce sont des instructions de classes, des constructeurs, ou des main, c'est très différent.
Exemple :
"relançait une nouvelle instance donc ramenait les variables à leur valeur de base"
Ce ne sont pas les mêmes variables ! Chaque objet aura ses variables propres, donc faire un set sur un objet ne modifiera pas les valeurs sur les autres objets... ou alors il faut utiliser des variables statiques, mais est-ce que c'est ce que tu veux !?
Pour mieux comprendre ton problème, pourrais-tu refaire ton code en Java correct ?
Parce que là je suis un peu perdu avec ton pseudo-code, j'ai du mal à voir si ce sont des instructions de classes, des constructeurs, ou des main, c'est très différent.
Exemple :
// Ton pseudo code Class Main { ClassA a = new ClassA(); a.setVariable(valeur_desiree); ClassB b = new ClassB(); b.getVariable(); } // Des instructions de classe <code>class Main { ClassA a = new ClassA(); // Attribut de la classe { a.setVariable(valeur_desiree); } ClassB b = new ClassB(); { b.getVariable(); } } // Un constructeur class Main { Main() { ClassA a = new ClassA(); // Variable locale du constructeur a.setVariable(valeur_desiree); ClassB b = new ClassB(); b.getVariable(); } } // Un main class Main { public static void main(String...args) { ClassA a = new ClassA(); // Variable locale du main a.setVariable(valeur_desiree); ClassB b = new ClassB(); b.getVariable(); } }