java  

Re: Re: Duplication d'un Objet

Nicolas Delsaux
Mon, 02 Dec 2002 08:10:10 -0800

>Comme deja dit, tu dois utilise la method clone, mais ton object doit
>implementer l'interface Clonable !
>Cela pose un probleme, lorsque tu tiens un reference d'un object qui
>implement Clonable sous un forme plus generic comme Object,
>le compilo ne te laisse pas appeler la fonction vu quelle est protectd !
>Pour cela j'ai une solution via l'introspection !

L'idée de clone, c'est que comme tu es dans ton objet, tu sais quels sont les types de 
tes différentes sous-parties. Et par conséquent, tu n'es jamais obligé de passer par 
Object. D'ailleurs, tous les objets non Copyable dont tu disposes sont probablement 
recréés lors d'un clone, pusiqu'ils doivent balancer une CloneNotSupportedException.
Par conséquent, j'estime (à priori, bien sûr), que devoir utiliser l'introspection 
pour cloner des Object n'est pas une bonne idée.

>Mais le clone, ne fait qu'une copie shadow, pour faire un copie deep, de
>maniere generique tu peux utiliser la serialisation !

Ca dépend comment tu t'en sers. le clone, comme equals, est une méthode qu'il vaut 
mieux surcharger, pour en maîtriser le fonctionnement. Et dans ce cas, libre à toi de 
faire ton clone comme tu l'entends.

>Si non, creer comme en C++ un contructeur de copie !

Quelqu'un rappelait que le constructeur de copie n'était pas Java, pour la bonne 
raison qu'on perd, dans le cas du constructeur de copie, l'héritage qui est conservé 
avec le clone.
>
>Si cela t'interesse, je peux te fournir des exmples pour les deux cas !
>
>Dominique
>

-- 
Nicolas Delsaux
"Ia démocratie est la pire des dictatures parce qu'elle est la dictature exercée par 
le plus grand nombre sur la minorité."
Pierre Desproges