Le Jeudi 6 Mars 2003 11:54, HAREL Anthony a �crit :
> Que fait exactement la m�thode clone de la classe Object?
> Si je veux pouvoir cloner un objet, faut-il que je sucharge la
> methode clone() de mani�re a effectivement effectuer une copie
> profonde de mon objet au lieu de copier des r�ferences?
Pour une fois, Dieu soit lou�, la m�thode clone fait ce que l'on croit qu'elle
fait : un clone !
C'est � dire que l'objet d'origine et l'objet clon� ont tous exactement les
m�mes valeurs _ET LES MEMES REFERENCES_ d'attributs, seule la r�f�rence de
l'objet d'origine est diff�rente de celle de l'objet clon�. Il est important
de bien comprendre et de bien se rendre compte que les attributs ne sont pas
clon�s, du moins dans la m�thode fournie par java.lang.Object.
Si tu veux pouvoir cloner un objet, il faut que tu lui refiles
l'impl�mentation java.lang.Cloneable, et que tu utilises la m�thode clone. Tu
n'as besoin de surcharger cette m�thode que si tu veux la rendre publique
(elle est protected au d�part), ou si tu veux modifier le comportement de
clone.
Modifier le comportement de clone est int�ressant si tu veux cloner aussi les
attributs, ce qui est souvent utile, bien que pas toujours possible. Si tu le
fait, dans ta nouvelle m�thode clone il faut toujours appeler super.clone(),
et travailler � partir de l'objet que te renvoie cet appel.
Par exemple :
class Z implements java.lang.Cloneable
{
Attribut nimportequoi;
public Object clone()
{
Z z = (Z)super.clone();
z.nimportequoi = (Attribut)nimportequoi.clone();
return z;
}
}
--
SARL diaam informatique - 04 50 32 59 84
Ingenierie, d�veloppements de syst�mes d'information
http://www.diaam-informatique.com