Problème avec clone !!! - Java - Programmation
Marsh Posté le 19-04-2005 à 18:24:27
l'object n'est pas recopier ailleurs en mémoire et la référence reste la même (ie sur l'object dont on fait la copie)
Marsh Posté le 19-04-2005 à 18:32:34
n'est pas recopier é
je doit s
Mes classes implementes nt
B*rd*l, les gens ne savent vraiment plus écrire ?! Niveau école primaire !!!! Avant de coder un clone(), quoi, c'est trop demander ?
Essaye avec disons un attribut "simple" (genre String) et un de ton propre cru, pour simplifier. Ensuite, poste ton code simplifié si ça ne va pas mieux.
Marsh Posté le 19-04-2005 à 18:44:11
sircam a écrit : n'est pas recopi |
Avant une solution "propre", ecrire proprement c'est cool aussi... Bref, tu peux utiliser un constructeur par copie, ca evite la surcharge des classes avec clonable
Marsh Posté le 19-04-2005 à 21:21:38
ca marche avec les classes que j'ai créé mais avec les vecteurs impossible de faire du clonage ...
Marsh Posté le 19-04-2005 à 21:42:41
Alors, comme je l'ai dis plus haut mon code ressemble à ca :
Code :
|
Ensuite je fais C maclasse1 = new C(); puis C maclasse2 = maclasse1.clone();
Or ensuite lorsque je regarde les reférences des objets clonés :
Les objets maclasse2, maclasse2.attributs1 et maclasse2.classe1 ont des références différentes de l'objet de départ
Et maclasse2.liste garde la même référence que maclasse1.liste ...
J'ai essayé d'être plus clair...
Marsh Posté le 06-05-2005 à 10:00:20
La méthode clone() renvoie une copie d'un objet mais pas de tous les objets qui la constituent...
Si tu as une classe toto du style
public class toto{
Object titi;
Object tutu;
et que tu fais macopie=montoto.clone();
macopie dispose d'un titi a lui et d'un tutu a lui mais qui pointe physiqement sur ceux de montoto
Si tu modifies montoto.titi il va changer celui de ma copie.titi ....
quand tu redefinis la méthode clone() dans ta classe, tu dois aussi cloner les attributs de la classe
du style
public toto clone(){
toto macopie=new toto();
macopie=this.clone();
macopie.settiti(this.titi.clone());
....
return macopie;
}
Marsh Posté le 19-04-2005 à 16:47:53
Bonjour!
J'ai fait une petite appli dans laquelle je doit utiliser la méthode clone. Mes classes implementes donc l'interface cloneable et redifinisse la méthode protected Object clone() en public Ojbect clone().
Dans public Object clone je recopie tous les attributs ou classes dans un nouvel object de la facon suivante :
et ca ne marche pas ... Pouvez-vous m'aider. Ou alors y'a t-il une autre solution (plus propre) pour copier des objets ? Merci
Message édité par rital_5_4 le 19-04-2005 à 16:48:52