Copier un objet ET NON SA REFERENCE dans une variable

cs_darkstorm Messages postés 44 Date d'inscription dimanche 3 février 2002 Statut Membre Dernière intervention 22 mai 2006 - 13 avril 2004 à 17:21
cs_GodConan Messages postés 2113 Date d'inscription samedi 8 novembre 2003 Statut Contributeur Dernière intervention 6 octobre 2012 - 13 avril 2004 à 20:36
Bonjour,

Mon problème est le suivant :

si je fais

ArrayList copie;
ArrayList objet=new ArrayList();
objet.add("Salut");
copie=objet;

je copie la référence de objet (son adresse mémoire) dans la variable copie, donc si je modifie copie, objet est aussi modifié puisque c'est 2 fois le même objet. Ceci ne me convient pas, comment puis-je faire pour copier VRAIMENT l'objet, c'est à dire que j'aie 2 copies à des emplacements mémoire indépendants.

Merci Et a+

4 réponses

kirua12 Messages postés 1155 Date d'inscription samedi 17 janvier 2004 Statut Membre Dernière intervention 29 avril 2011 7
13 avril 2004 à 18:30
Salut,

la méthode clone() est faite pour toi mais elle ne fait pas une copie profonde de l'objet, c'est à dire que les objets contenus dans ta 1ère liste seront les mêmes que dans ta 2nde liste. Tes 2 listes sont indépendantes mais elles ont les mêmes références sur les objets.
0
cs_GodConan Messages postés 2113 Date d'inscription samedi 8 novembre 2003 Statut Contributeur Dernière intervention 6 octobre 2012 12
13 avril 2004 à 19:04
GodConan :clown)

vi c bien dommage que la methode clone de la list n apelle pas elle aussi les methode clones de c element pour referencer les clone ;-( il se contente de faire un arraycopy ;-(

donc ta 2 soluce je pense ;o) soit tu parcours toute ta liste pour faire les clone de chac element ;-( soit tu surcharge ma methode ArrayList ;o) pour en revenir a la 1ere soluce ;o)héhé ...

GL

++
0
cs_darkstorm Messages postés 44 Date d'inscription dimanche 3 février 2002 Statut Membre Dernière intervention 22 mai 2006
13 avril 2004 à 19:19
Bonsoir,

Merci bien, c'est vraiment lourd ça, surtout que j'ai des objets imbriqués sur 3 niveaux, c'est vraiment immonde...
merci A+.
0
cs_GodConan Messages postés 2113 Date d'inscription samedi 8 novembre 2003 Statut Contributeur Dernière intervention 6 octobre 2012 12
13 avril 2004 à 20:36
GodConan :clown)
ben t objet a toi ta K redefinir proprement la methode clone
comme sa taura a parcourir que une foi ta liste pour appeler la methode clone de l objet de 1er level... ;o)

jespere g etai clair ;o)

Mais ds tous les cas verifi bien si ta reelment besoin d une copy de l nesemble des donnee ;o) c rarement necessaire... ;o)

GL

++
0
Rejoignez-nous