java  

RE: Duplication d'un Objet

Erik Mazoyer
Mon, 02 Dec 2002 07:29:19 -0800

> Si tu implémentes le constructeur qui va bien, ça peut se faire oui.

C'est faisable, mais cela ne va pas dans la philosophie Java.
Ca ressemble fortement a du C++.

En java, il est conseillé d'utiliser le clonage (méthode clone()).

Cette méthode doit être redéfinie par les objets voulant accépter le
clonage.

Le clonage est plus puissant car il permet l'héritage

Exemple
class A {
        int     monChampA;

        public A() {
        }
        public A(A a) {
                this.monChampA  = a.monChampA;
        }
        public void clone() {
                return this.clone();
        }
}
class B extends A {
        int     monChampB;

        public B() {
        }
        public B(B b) {
                super(b);
                this.monChampB  = b.monChampB;
        }
}

Par constructeur :
public A duplicate(A a) {
        return new A(a);
}

Par clonage :
public A duplicate(A a) {
        return (A)a.clone();
}

Dans le premier cas
A       = duplicate(new B());
retourne une instance de A, perte du champ monChampB;

Dans le second cas
A       = duplicate(new B());
retourne une instance de B,  sans perte du champ monChampB;

ATTENTION, il y a un piège avec le clonage :

Par défault, l'instance et son clone se partagent les mêmes objets. Il y a
recopie des pointeurs.
Si tu veux que tes champs de classes soient eux aussi clonés, tu dois le
faire toi même.

A+

--------------------------------------------------------------------
Erik Mazoyer, Chef de projet
HyperOffice
6, rue Jacques Daguerre - 92565 Rueil-Malmaison Cedex
Tél. 01 41 96 96 76
Fax 01 41 96 96 77
Mél  [EMAIL PROTECTED] 
 

-----Message d'origine-----
De : Patrice Godard [mailto:[EMAIL PROTECTED]]
Envoyé : lundi 2 décembre 2002 16:16
À : [EMAIL PROTECTED]
Objet : Re: Duplication d'un Objet


Si tu implémentes le constructeur qui va bien, ça peut se faire oui.

-----Original Message-----
From: [EMAIL PROTECTED]
To: [EMAIL PROTECTED]
Date: Mon, 2 Dec 2002 16:18:19 +0100
Subject: Duplication d'un Objet

Bonjour,

Est-ce possible de dupliquer un objet de la manière suivante :

Objet objetDestination = new Objet(objetSource);

Ou faut-il utiliser une autre méthode ?

Merci pour votre aide.

Eddy PALISSE
--

INGENCYS
Agence Conseil & Ingénierie en Systèmes d'Information

4, rue de la Madeleine
45140 SAINT-JEAN-DE-RUELLE
Tél. 02 38 43 45 86 - Fax : 02 38 43 48 83

http://www.ingencys.net

-- S'il n'y a pas de solution, il n'y a pas de problème --