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