1

重複の可能性:
Java:インスタンスのディープクローン作成/コピーに推奨されるソリューション

複製する必要のあるオブジェクトがあります。ただし、クローンを作成するときに、その中のオブジェクトもクローンする必要があります。これはどのように可能ですか?

4

6 に答える 6

7

これは明確に定義された問題ではなく、機械化された完全自動の方法でディープコピーを適切に実行できないことに注意する必要があります。これらはいくつかのオプションです:

  • Javaにはcloneプロトコルがありますが、最近のほとんどのシナリオでは非推奨と見なされています。
  • シリアル化を使用して、メモリ内をシリアル化-逆シリアル化できます。
  • いわゆるコピーコンストラクターを書くことができます。
于 2012-06-25T10:50:30.977 に答える
3

Javaディープクローンライブラリクローンライブラリは、オブジェクトをディープクローンする小さなオープンソースのJavaライブラリです。オブジェクトは、Cloneableインターフェースを実装する必要はありません。事実上、このライブラリは任意のJavaオブジェクトのクローンを作成できます。

Cloner cloner = new Cloner();
MyClass clone = cloner.deepClone(o);

だからここにクローンの例があります。

于 2012-06-25T10:51:23.820 に答える
2

clone() メソッド自体をオーバーライドする必要があります

public class Person implements Cloneable{
 private Long id;
 private Address address

  @Override
  protected Object clone() throws CloneNotSupportedException {
  //do deep cloning
  }

 }

も参照してください

于 2012-06-25T10:49:52.163 に答える
0

ディープコピーを実装する最も簡単な方法は、オブジェクトをシリアル化してから逆シリアル化することです。見上げるObjectInputStreamObjectOutputStream

于 2012-06-25T10:50:49.343 に答える
0

ディープクローン作成の最も簡単な方法は、を使用するJava serializationことです。ここで、ユーザーserializedeserializeオブジェクトを使用して、逆シリアル化されたバージョンを返します。

于 2012-06-25T10:51:13.953 に答える
0

クローンを作成する別の方法は、提供されたインスタンスのデータに基づいて新しいインスタンスを構築するためのコピーコンストラクターを提供することです。

public MyClass(MyClass instanceToCopy)
{
   ...
}
于 2012-06-25T10:53:19.327 に答える