Considérez le code ci-dessous :
DummyBean dum = new DummyBean();
dum.setDummy("foo");
System.out.println(dum.getDummy()); // prints 'foo'
DummyBean dumtwo = dum;
System.out.println(dumtwo.getDummy()); // prints 'foo'
dum.setDummy("bar");
System.out.println(dumtwo.getDummy()); // prints 'bar' but it should print 'foo'
Donc, je veux copier le dum
vers le dumtwo
et changer le dum
sans affecter le dumtwo
. Mais le code ci-dessus ne le fait pas. Lorsque je change quelque chose dans dum
, le même changement se produit dans dumtwo
aussi.
Je suppose que lorsque je dis dumtwo = dum
, Java copie la référence seulement. Alors, y a-t-il un moyen de créer une nouvelle copie de dum
et de l'assigner à dumtwo
?
Oui. Vous devez faire une [Copie profonde][1] de votre objet.
Voici une bonne explication de clone()
si vous en avez besoin...
Pour ce faire, vous devez cloner l'objet d'une manière ou d'une autre. Bien que Java dispose d'un mécanisme de clonage, ne l'utilisez pas si vous n'y êtes pas obligé. Créez une méthode de copie qui fait le travail de copie pour vous, puis faites-le :
dumtwo = dum.copy();
[Ici][1] vous trouverez d'autres conseils sur les différentes techniques pour réaliser une copie.
[1] : https://stackoverflow.com/questions/475842/copy-an-object-in-java