Problème de méthode clone();

cs_mirosa Messages postés 15 Date d'inscription jeudi 16 avril 2009 Statut Membre Dernière intervention 6 mai 2012 - 11 janv. 2012 à 12:26
cs_Julien39 Messages postés 6414 Date d'inscription mardi 8 mars 2005 Statut Modérateur Dernière intervention 29 juillet 2020 - 13 janv. 2012 à 15:39
bonjour,
j'ai un problème d'utilisation de la méthode clone .
je veux travailler sur une copie d'un vecteur d'attribut " res1 " (res c'est la copie originale ) car je ne veux pas modifie la copie original , mais cela ne marche pas et toujours la copie original a changé .
Code :
// l'interface
public interface cloneable {
Object clone();
}
la méthode clone qui se trouve dans ma classe qui implémente l'interface :
public Object clone() {
Object o = null;
try {
// On récupère l'instance à renvoyer par l'appel de la
// méthode super.clone()
o = super.clone();
} catch(CloneNotSupportedException cnse) {
// Ne devrait jamais arriver car nous implémentons
// l'interface Cloneable
cnse.printStackTrace(System.err);
}
// la copie res1 de res
Vector<Regle> res1=(Vector<Regle>) res.clone();
....
si vous pouvez m'aider pour résoudre ce problème;
merci à tous
je ne sais pas pourquoi la copie original "res" change lors de l'exécution

3 réponses

cs_Julien39 Messages postés 6414 Date d'inscription mardi 8 mars 2005 Statut Modérateur Dernière intervention 29 juillet 2020 367
11 janv. 2012 à 13:32
Bonjour,

Tu ne fais rien du tout, tu ne fais que réutiliser la méthode clone sur Vector. Je te conseil de recréer un objet Vector et de faire un addAll avec le vecteur d'origine.

De toute facon, la méthode clone pose pas mal de problème dans le cadre de l'héritage par exemple, il vaut mieux l'oublier dans un contexte de poo je pense.
0
cs_mirosa Messages postés 15 Date d'inscription jeudi 16 avril 2009 Statut Membre Dernière intervention 6 mai 2012
13 janv. 2012 à 14:38
bonjour,
même avec un addAll j'ai le même problème
merci
0
cs_Julien39 Messages postés 6414 Date d'inscription mardi 8 mars 2005 Statut Modérateur Dernière intervention 29 juillet 2020 367
13 janv. 2012 à 15:39
Ok, alors ce n'est pas une copie du vecteur que tu veux mais un vecteur qui contient des copies des objets.

La méthode clone n'est donc pas à définir sur le vecteur mais sur l'objet contenu dans le vecteur.
0