Considere el siguiente código:
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'
Entonces, quiero copiar el dum
a dumtwo
y cambiar dum
sin afectar al dumtwo
. Pero el código anterior no hace eso. Cuando cambio algo en dum
, el mismo cambio ocurre en dumtwo
también.
Supongo que cuando digo dumtwo = dum
, Java copia la referencia solamente. Entonces, ¿hay alguna forma de crear una copia nueva de dum
y asignarla a dumtwo
?
Aquí hay una explicación decente de clone()
si acabas necesitándolo...
Para ello, tienes que clonar el objeto de alguna manera. Aunque Java tiene un mecanismo de clonación, no lo uses si no es necesario. Crea un método de copia que haga el trabajo de copia por ti, y luego hazlo:
dumtwo = dum.copy();
Aquí hay más consejos sobre diferentes técnicas para realizar una copia.