Bonjour
J'ai la classe suivante :
Et le test suivant :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23 public class Classe1 implements Cloneable { private String name = null; @Override protected Object clone() throws CloneNotSupportedException { Classe1 clone = (Classe1) super.clone(); clone.name = this.name; return clone; } public String getName() { return name; } public void setName(String name) { this.name = name; } }
import junit.framework.TestCase;
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17 public class Classe1Test extends TestCase { public void testClone() { try { Classe1 cla = new Classe1(); cla.setName("TOTO"); Classe1 clone = (Classe1) cla.clone(); assertNotSame(cla.getName(), clone.getName()); } catch (CloneNotSupportedException e) { e.printStackTrace(); } } }
Le test assertNotSame(cla.getName(), clone.getName()); ne passe pas car apparement l'adresse de la propriétés semble être la même.
pourtant il me semblait qu'en faisant clone.name = this.name; dans le clone, du fait que la classe String est immuable, un nouvel objet serait créé, donc un nouvel adressage.
Ce n'est pas le cas ici ? Pourriez vous éclairer ma lanterne ?
Merci d'avance
Partager