omcougar
Messages postés152Date d'inscriptionmardi 4 mai 2004StatutMembreDernière intervention 8 octobre 2008
-
24 juil. 2006 à 11:42
super_toinou
Messages postés764Date d'inscriptionmardi 25 mai 2004StatutMembreDerniè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) ?
super_toinou
Messages postés764Date d'inscriptionmardi 25 mai 2004StatutMembreDernière intervention 8 mars 20116 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 !!
super_toinou
Messages postés764Date d'inscriptionmardi 25 mai 2004StatutMembreDernière intervention 8 mars 20116 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 !!!!