Copy or not copy

Résolu
Signaler
Messages postés
152
Date d'inscription
mardi 4 mai 2004
Statut
Membre
Dernière intervention
8 octobre 2008
-
Messages postés
764
Date d'inscription
mardi 25 mai 2004
Statut
Membre
Dernière intervention
8 mars 2011
-
Bonjour,

vous allez me dire que c'est vraiment une question de noob et vous aurez raison... voila plus d'un an que je developpe en java et je recontre des soucis qui me font penser que mon approche n'est pas la bonne...

j'ai un objet MyObjet dont je crée une instance A avec tout un tas de valeurs diverses et variées.

en suite j'ai besoin de créer une instance B qui ressemble comme deux goutes d'eaux à A à un ou deux détail près.

j'appel B=new MyObjet(A) qui crée un nouvel objet B et repique toutes les valeurs de A

le constructeur ressemble à cela:

MyObjet( MyObjet A) {
   int_value_1= A.int_value_1;
   string_value_1= A.string_value_1;
   etc...
 }

mais j'ai l'impression qu'au lieu d'avoir des valeurs propres à B, il traine des pointeurs vers A.
traine car je n'ai pas l'impression qu'il n'y ait que des pointeurs... [mailto:??!&#@$% ??!&#$%]

Comment fait on pour créer un nouvle objet qui soit la copie conforme d'un objet existant mais avec ses propres valeurs (pas de pointeur) ?

Merci

5 réponses

Messages postés
764
Date d'inscription
mardi 25 mai 2004
Statut
Membre
Dernière intervention
8 mars 2011
8
disons que toi tu ne voit pas de pointeurs (pas de gestion de l allocation memoire etc..) c d ailleurs ce qui fait un des gros succes de java
néanmoins les pointeurs sont soujacents a java, c est pour ca que dire objet B va pointer vers A ne me choque absolument pas !!
Messages postés
764
Date d'inscription
mardi 25 mai 2004
Statut
Membre
Dernière intervention
8 mars 2011
8
t utilise la méthode clone de la classe object qui te clone l objet en entier, souvent c est a toi de la définir mais sinon tu peux utiliser SerializationUtils.clone() (SerializationUtils est une classe d apache qu il faut aller choper).
Sinon en effet avec ta méthode il traine bien de pointeur vers A
en effet quand tu fais dans ton constructeur

string_value_1= A.string_value_1;
B et A vont pointer vers le meme objet String !! d ou qd un est modifié l autre aussi.
Il faudrait faire
string_value_1= A.string_value_1.clone();

Voili voilou
++ Toinou
PS: ton code est un peu porcasse, pense a utiliser les setter et getter à la place de A.mavaleur !!!!
Messages postés
764
Date d'inscription
mardi 25 mai 2004
Statut
Membre
Dernière intervention
8 mars 2011
8
Messages postés
10
Date d'inscription
dimanche 12 mars 2006
Statut
Membre
Dernière intervention
4 août 2006

Pour info 2: il n'y a pas de pointeurs en JAVA... d'ailleurs c'est ca k'est bien avec le java!
Messages postés
152
Date d'inscription
mardi 4 mai 2004
Statut
Membre
Dernière intervention
8 octobre 2008
1
Pas de pointeur ? je ne suis pas certain de comprendre