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