Bonjour,
j'aimerai savoir comment faire pour cloner une classe mais en dupliquant également la valeur des attributs, ce que ne fait pas la méthode "clone()".
Merci
Bonjour,
j'aimerai savoir comment faire pour cloner une classe mais en dupliquant également la valeur des attributs, ce que ne fait pas la méthode "clone()".
Merci
On "clone" des objets et non des classes...
Tu dois pour cela redéfinir la méthode clone pour qu'elle fasse ce que tu veux.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7 public MonObjet clone(MonObjet B){ MonObjet A=new MonObjet(); A.setAttribut1(B.getAttribut1); //le reste du traitement return A; }
Envoyé par afrikha
FAUX !
Dans ton exemple, l'attribut B n'est pas dupliqué. L'attribut A et l'attribut B référencent la même valeur.
Moi je voudrais cloner les attributs également
Ce que tu peut faire, c'est prendre chaque attribut de la classe à cloner et les cloner et ensuite mettre le clone de ces attributs dans le clone de la classe.
Oui en gros je voulais savoir si il existait une méthode proche de la méthode clone() mais qui faisiat un clone total, c'est à dire qui duplique l'objet, ses attributs et la valeur des attributs.
Si cela n'existe pas, j'opterai alors pour une autre facon de faire, en l'occurence redéfinir la méthode clone et cloner mes attributs un par un.![]()
Ah la la, je suis mal réveillé moi, mais bon ce n'est pas une raison![]()
Je ne vois pas d'autres solutions à part celle proposé par wichtounet.
Le problème c'est que mon objet comporte des attributs de types différents : String ,int et des types Objet.Envoyé par wichtounet
Or , la classe String par exemple, n'implémente pas l'interface Cloneable, ce qui signifie que pour cloner une valeur de type String, je suis obligé de faire dériver la classe String en une classe String1 qui va implémenter la classe Cloneable et tous mes attributs de type String devront être de type String1 : extrémement lourd...
Partager