1. ホーム
  2. java

[解決済み] Javaでオブジェクトをコピーするにはどうしたらいいですか?

2022-03-19 06:36:43

質問

以下のコードを考えてみてください。

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 をコピーします。 参照のみ . の新しいコピーを作成する方法はありますか? dum に割り当て、それを dumtwo ?

解決方法は?

コピーコンストラクタを作成します。

class DummyBean {
  private String dummy;

  public DummyBean(DummyBean another) {
    this.dummy = another.dummy; // you can access  
  }
}

すべてのオブジェクトはcloneメソッドを持っていて、それを使ってオブジェクトをコピーすることができますが、これは使わないでください。クラスを作成して、不適切なcloneメソッドを実行するのはあまりにも簡単です。もしそんなことをするなら、少なくともJoshua Blochが書いた 効果的なJava .