Как мне скопировать объект в Java? - PullRequest
737 голосов
/ 15 мая 2009

Рассмотрим код ниже:

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'

Итак, я хочу скопировать dum в dumtwo и изменить dum, не затрагивая dumtwo. Но код выше не делает этого. Когда я что-то изменяю в dum, то же самое происходит и в dumtwo.

Полагаю, когда я говорю dumtwo = dum, Java копирует только ссылку . Итак, есть ли способ создать новую копию dum и присвоить ее dumtwo?

Ответы [ 21 ]

1 голос
/ 15 мая 2009

Вы можете попробовать реализовать Cloneable и использовать метод clone(); однако, если вы используете метод клонирования, вы должны - по умолчанию - ВСЕГДА переопределять Object public Object clone() метод.

...