>Je ne sais pas si j'ai �t� assez clair l� dessus dans mon message, mais il

>n'existe pas de fa�on g�n�rique de cloner un objet. C'est une limitation
>volontaire. Tu peux trouver des workeround partiels, mais rien de
g�n�rique.
>Tu DOIS partir d'une classe que tu as toi m�me d�fini et �crit, classe qui

>concr�tise Cloneable et qui rend publique la m�thode clone, ou te
d�brouiller
>avec des astuces de serialization, elles m�mes non g�n�riques, c'est comme

>�a, un point, c'est tout. Affiche le en GROS dans ton bureau !

1- Calme, c'est pas moi qui ai pos� la question en premier !

2-Il est vraiment absurde de dire, de Clonable

       * A class implements the <code>Cloneable</code> interface to
       * indicate to the {@link java.lang.Object#clone()} method that it
       * is legal for that method to make a
       * field-for-field copy of instances of that class.

   Et puis d'avoir un tableau d'objects qui indique qu'il est permit de
cloner l'oject et de ne pas pouvoir le faire !

3- Ce n'est tout a fait vrai.

   1-Il est possible d'utilise le meme mechanisme que la serialisation pour
cloner des objects, "c'est la reflexion/introspection", meme si
     elle n'implemente pas Serializable
            regarge java.lang.AccessibleObject.setAccessible()
                ET en implementant un security manager different de celui
par default, qui pour info, ne permet ce call, que si il vient des core
          package.
   2- Idem pour clone, on peut meme via des packages de manipulation de
bytecode ( tt-byte) , implementer l'interface Clonable
      et puis via ce meme package marquer la methode clone comme public, ou
encore, utilise le java.lang.AccessibleObject.setAccessible() sur
      l'object Method. Mais la cela deviens vraiment bcp pour par faire
grand chose, quoi que, lorsque l'on sait comment les proxy sont fait,
      cela le devient moins ( java.lan.reflect.Proxy et la helper class
sun.misc.ProxyGenerator, tt-byte n'a rien inventer ).

Je pointais simplement le probleme que Clonable, pour moi, devrait
      - avoir la methode Clone()
Maintenant je sais que Sun l'a fait afin que du code externe ne puisse pas
cloner des objects inconnu. Ce qui finalement ne sert a rien, car
si le descendant possede une method public clone, l'introspection permet
facilement de passe outre !

Donc J'ecrit EN GROS sur mon bureau, que impossible n'est pas java ! ( mais
gros comment ? )

Hope this help,

Dominique




|---------+------------------------------------->
|         |           Herve AGNOUX              |
|         |           <herve.agnoux@diaam-inform|
|         |           atique.com>               |
|         |                                     |
|         |           03/12/2002 15:04          |
|         |           Please respond to java    |
|         |                                     |
|---------+------------------------------------->
  
>-------------------------------------------------------------------------------------------------------------------------------|
  |                                                                                    
                                          |
  |       To:       [EMAIL PROTECTED]                                                  
                                          |
  |       cc:       (bcc: Dominique Gallot/BRU/MASTERCARD)                             
                                          |
  |       Subject:  Re: Re: Re: Duplication d'un Objet                                 
                                          |
  
>-------------------------------------------------------------------------------------------------------------------------------|




Le Mardi 3 D�cembre 2002 13:33, Dominique Gallot a �crit :

>
> 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 !
>

Je ne sais pas si j'ai �t� assez clair l� dessus dans mon message, mais il
n'existe pas de fa�on g�n�rique de cloner un objet. C'est une limitation
volontaire. Tu peux trouver des workeround partiels, mais rien de
g�n�rique.
Tu DOIS partir d'une classe que tu as toi m�me d�fini et �crit, classe qui
concr�tise Cloneable et qui rend publique la m�thode clone, ou te
d�brouiller
avec des astuces de serialization, elles m�mes non g�n�riques, c'est comme
�a, un point, c'est tout. Affiche le en GROS dans ton bureau !

Pour les tableaux, la m�thode simple, qui ne fait qu'un clone partiel, est
java.lang.System.arraycopy(...). Tu peux aussi t'amuser � partir de
java.util.Arrays.asList(...) (mais l� aussi, clone partiel uniquement).

A+.



--
SARL diaam informatique - 04 50 77 12 60
Ingenierie, d�veloppements de syst�mes d'information
http://www.diaam-informatique.com


--
SARL diaam informatique - 04 50 77 12 60
Ingenierie, d�veloppements de syst�mes d'information
http://www.diaam-informatique.com






Répondre à