si tu clones une ArrayList tu obtiens une deuxieme ArrayList qui reference
les meme instances.
Par contre certain element constitutif de l'ArrayList sont clon�s pour
assurer que modifier le clone ( avec un add ou un remove par exemple) ne
modifie pas l'instance d'origine

> -----Message d'origine-----
> De : HAREL Anthony [mailto:[EMAIL PROTECTED]
> Envoy� : jeudi 6 mars 2003 17:50
> � : [EMAIL PROTECTED]
> Objet : Re: clonage d'objets
> 
> 
> Ok, merci pour ces pr�cisions.
> Par contre peux tu me dire ce qui se passe quand on appele la 
> methode clone sur
> une ArrayList contenant des Objets que j'aurais d�finis? Ca 
> signifie que mes
> Objets que je stocke dans des ArrayList que je veux pouvoir 
> cloner doivent �tre
> cloneable?
> 
> Herve AGNOUX a �crit :
> 
> > 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
> 
> --
> _______________________________
> 
>   Anthony HAREL
> 
> 
>   mailto:[EMAIL PROTECTED]
> _______________________________
> 
> 

Répondre à