Cloner objet java
skflers61
Messages postés
43
Date d'inscription
Statut
Membre
Dernière intervention
-
KX Messages postés 16761 Date d'inscription Statut Modérateur Dernière intervention -
KX Messages postés 16761 Date d'inscription Statut Modérateur Dernière intervention -
Bonjour,
j'essaie de cloner un objet mais apparemment je ne le fais pas comme il faut.
Voici mon code:
et j'appel cette méthode comme ceci:
Normalement je devrais avoir deux objets différents mais chez moi pieceUsinee et pieceOld pointent vers le même objet.
Une modification sur pieceUsinee se répercute sur pieceOld. (Dans le debugger d'eclipse, on peut voir que ces deux variables on le même id)
Qu'est ce que je dois faire pour réparer sa?
Merci pour vos réponses.
j'essaie de cloner un objet mais apparemment je ne le fais pas comme il faut.
Voici mon code:
public class Piece implements Cloneable{ ... 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); } // on renvoie le clone return o; } }
et j'appel cette méthode comme ceci:
Piece pieceUsinee = new Piece(); Piece pieceOld = (Piece) pieceUsinee.clone();
Normalement je devrais avoir deux objets différents mais chez moi pieceUsinee et pieceOld pointent vers le même objet.
Une modification sur pieceUsinee se répercute sur pieceOld. (Dans le debugger d'eclipse, on peut voir que ces deux variables on le même id)
Qu'est ce que je dois faire pour réparer sa?
Merci pour vos réponses.
A voir également:
- Cloner objet java
- Cloner disque dur - Guide
- Waptrick java football - Télécharger - Jeux vidéo
- Jeux java itel - Télécharger - Jeux vidéo
- Eclipse java - Télécharger - Langages
- Java apk - Télécharger - Langages
1 réponse
Bonjour,
Dans le debugger d'eclipse, on peut voir que ces deux variables on le même id
Quel est cet id dont tu parles ? Il s'agit d'un champ de ta classe ? Dans ce cas c'est normal qu'ils soient identique, l'id a été clonée aussi...
Remarque : si super.clone() propage l'exception c'est que clone() doit également la propager, au minimum pour respecter la signature de la méthode.La confiance n'exclut pas le contrôle
Dans le debugger d'eclipse, on peut voir que ces deux variables on le même id
Quel est cet id dont tu parles ? Il s'agit d'un champ de ta classe ? Dans ce cas c'est normal qu'ils soient identique, l'id a été clonée aussi...
public class RandomValue implements Cloneable { private final double value = Math.random(); @Override public Object clone() throws CloneNotSupportedException { return super.clone(); } public static void main(String[] args) throws CloneNotSupportedException { RandomValue original = new RandomValue(); RandomValue clone = (RandomValue) original.clone(); System.out.println(original==clone); // false System.out.println(original.value==clone.value); // true } }
Remarque : si super.clone() propage l'exception c'est que clone() doit également la propager, au minimum pour respecter la signature de la méthode.La confiance n'exclut pas le contrôle