>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

Répondre à