Como faço para copiar um objeto em Java?

Considere o código abaixo:

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'

Então, eu quero copiar o dum para o dumtwo e mudar o dum sem afetar o dumtwo. Mas o código acima não está fazendo isso. Quando eu mudo algo no dum, a mesma mudança está acontecendo no dumtwo também.

Eu acho que, quando eu digo dumtwo = dum, Java copia apenas a **referência***. Então, existe alguma maneira de criar uma nova cópia do dum e atribuí-la ao dumtwo?

Sim. Você precisa de cópia profunda seu objeto.

Comentários (1)

Aqui's uma explicação decente de clone() se você acabar precisando dele...

Aqui: clone (método Java)

Comentários (0)

Para fazer isso você tem que clonar o objeto de alguma forma. Embora Java tenha um mecanismo de clonagem, don'não o utilize se não'não é necessário. Crie um método de cópia que faça a cópia funcionar para você, e então faça:

dumtwo = dum.copy();

Aqui é mais um conselho sobre diferentes técnicas para a realização de uma cópia.

Comentários (0)