Copy or not copy

Résolu
omcougar Messages postés 152 Date d'inscription mardi 4 mai 2004 Statut Membre Dernière intervention 8 octobre 2008 - 24 juil. 2006 à 11:42
super_toinou Messages postés 764 Date d'inscription mardi 25 mai 2004 Statut Membre Dernière intervention 8 mars 2011 - 27 juil. 2006 à 11:04
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

super_toinou Messages postés 764 Date d'inscription mardi 25 mai 2004 Statut Membre Dernière intervention 8 mars 2011 6
27 juil. 2006 à 11:04
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 !!
3
super_toinou Messages postés 764 Date d'inscription mardi 25 mai 2004 Statut Membre Dernière intervention 8 mars 2011 6
24 juil. 2006 à 13:42
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 !!!!
0
super_toinou Messages postés 764 Date d'inscription mardi 25 mai 2004 Statut Membre Dernière intervention 8 mars 2011 6
24 juil. 2006 à 13:44
0
tatoo1412 Messages postés 10 Date d'inscription dimanche 12 mars 2006 Statut Membre Dernière intervention 4 août 2006
25 juil. 2006 à 12:58
Pour info 2: il n'y a pas de pointeurs en JAVA... d'ailleurs c'est ca k'est bien avec le java!
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
omcougar Messages postés 152 Date d'inscription mardi 4 mai 2004 Statut Membre Dernière intervention 8 octobre 2008 1
25 juil. 2006 à 16:01
Pas de pointeur ? je ne suis pas certain de comprendre
0
Rejoignez-nous