java  

RE: Re: Re: Duplication d'un Objet

Dominique Gallot
Tue, 03 Dec 2002 04:31:32 -0800

>Elle existe surtout dans Object parce qu'elle prend en compte les classes
>descendantes :
>
>soit B classe qui étend la classe A et implémente Cloneable. B n'a pas
>besoin de surcharger la méthode clone() pour que le clonage prenne en
compte
>même les champs définis dans la classe B :
>
>A a = new B();
>B clone = (B) a.clone(); // marche sans avoir besoin de redéfinir clone()
>
>Définir la méthode clone() dans l'interface Cloneable obligerait toutes
les
>classes qui l'implémentent de réinventer la roue.

Le vrai probleme est qu'elle est protected ! Donc Si on cree un object
Clonable l'on doit
    protected native Object clone() throws CloneNotSupportedException;

Donc on doit la redefinir avec pq pas un super.clone().

Si dans l'interface Clonnable, on avais une fonction
 Object clone() throws CloneNotSupportedException;

Le fait de l'implementer aurait de facon automatique changer la fonction de
protected vers public.
De plus et surtout il aurait eu moyen de manipuler des object Clonable qui
ne descende pas de la meme
hierachie.

Imagine

Clonable[] obj;
Clonable[] newObject;

Comment de facon generique copier le tableau ? Le seul moyen est d'appeler
via l'introspection, la methode Clone() ( qui existe et en
plus qui fonctionnera via que l'object implemente Clonable ) pour cloner
l'object !


Dominique