Objet passé en parametre modifié sans raison

Sat83 Messages postés 166 Date d'inscription mardi 11 novembre 2003 Statut Membre Dernière intervention 13 octobre 2008 - 31 mai 2006 à 15:50
Sat83 Messages postés 166 Date d'inscription mardi 11 novembre 2003 Statut Membre Dernière intervention 13 octobre 2008 - 1 juin 2006 à 10:49
Bonjour!

Alors voilà, j'ai un probleme et je n'en comprend pas du tout la cause, donc je me dis que votre oeil d'expert pourra peut etre m'éclairé...

J'ai une methode dans une classe Reductor:

 public Expression reduceAnExpression(/*final*/Expression expToReduce) {
  Expression tmp = new Expression();
  tmp.setName(expToReduce.getName());
     for (int i = 0; i < expToReduce.getNbParameter(); i++) {
         tmp.addElement(expToReduce.getAParam(i));
     }
  Expression tmp2 = new Expression();
  tmp2 = reduce(tmp);
  return tmp2;
 }

 Maintenant dans mon Main, voilà ce queje fait:

   System.out.println(ex);
   solution=reduc.reduceAnExpression(ex);
   System.out.println(ex);

Je ne comprend pas pourquoi mon objet "ex" (de type Expression) dans le Main est modifié (les 2 println n'affiche pas la meme chose!)

J'ai le nez la dessus depuis des heures et je ne comprend pas pourquoi! Si jamais vous pouvez me l'expliqué, se serait vraiment sympa! Merci d'avance!

(A noté que tout le reste marche tres bien)

2 réponses

HSylvio Messages postés 116 Date d'inscription jeudi 22 juillet 2004 Statut Membre Dernière intervention 14 juin 2012
31 mai 2006 à 16:08
Bonjour;
as tu essayé de faire   tmp.addElement(new Element(expToReduce.getAParam(i)));
ou bien                        tmp.addElement(expToReduce.getAParam(i).clone());         
Enfin voila koi d'apres ce ke tu dis il faut que tu copies la valeur de Element alors que tu l'envoie directement.

C'est comme si tu faisais (*ex) au lieu de (ex) en c++...
Bonne chance
        
0
Sat83 Messages postés 166 Date d'inscription mardi 11 novembre 2003 Statut Membre Dernière intervention 13 octobre 2008
1 juin 2006 à 10:49
Merci pour ta réponse!

Malheureusement j'ai modifié comme tu l'a indiqué, et l'objet passé en paramètre est quand meme modifié...

Peut etre une autre idée?
0
Rejoignez-nous