Comment copier un objet en Java ?

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.

[1] : http://en.wikipedia.org/wiki/Object_copy

Commentaires (1)

Voici une bonne explication de clone() si vous en avez besoin...

Ici : clone (méthode Java)

Commentaires (0)

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

Commentaires (0)