Javaのディープコピーとシャローコピーの実装方法は何ですか。
Javaにおけるディープコピーとシャローコピーの実装方法は次の通りです:
- 物体 (ぶったい)
- 複製()
- クローン可能
- コピーを作成する
public class MyClass implements Cloneable {
private int value;
private List<String> list;
public MyClass(int value, List<String> list) {
this.value = value;
this.list = list;
}
@Override
protected Object clone() throws CloneNotSupportedException {
MyClass clone = (MyClass) super.clone();
clone.list = new ArrayList<>(list);
return clone;
}
}
- ディープコピー:ディープコピーとは、新しいオブジェクトを作成し、元のオブジェクトのすべてのフィールドの値を新しいオブジェクトにコピーすることを指します。これには、参照型のフィールドも含まれます。ディープコピーには、参照型フィールドを手動で再帰的にコピーする必要があります。以下は例示コードです:
public class MyClass {
private int value;
private List<String> list;
public MyClass(int value, List<String> list) {
this.value = value;
this.list = list;
}
public MyClass(MyClass other) {
this.value = other.value;
this.list = new ArrayList<>(other.list);
}
}
上記は、深いコピーと浅いコピーの一般的な実装方法です。具体的な要求やシーンに応じて適切な方法を選択してください。