以下のコードを考えてみましょう。
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
?
ベストアンサー1
コピー コンストラクターを作成します。
class DummyBean {
private String dummy;
public DummyBean(DummyBean another) {
this.dummy = another.dummy; // you can access
}
}
すべてのオブジェクトには、オブジェクトをコピーするために使用できるクローンメソッドもありますが、使用しないでください。クラスを作成して不適切なクローンメソッドを実行するのは非常に簡単です。そうするつもりなら、少なくともJoshua Blochがそれについて言っていることを読んでください。効果的なJava。