同じフィールドを持つ別のクラスオブジェクトにオブジェクトをディープコピーする方法はありますか?
public class A implements Serializable {
private String name;
private List<String> nameList;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public List<String> getNameList() {
return nameList;
}
public void setNameList(List<String> nameList) {
this.nameList = nameList;
}
}
public class B implements Serializable {
private String name;
private List<String> nameList;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public List<String> getNameList() {
return nameList;
}
public void setNameList(List<String> nameList) {
this.nameList = nameList;
}
}
を次のように私は今、私はフィールドが初期化の両方で、クラスA、AOBJのオブジェクトを持つ2つのJavaクラスを持っています。 BeanUtils.copyProperties(Bobj、Aobj)を使用していますが、name
フィールド値のみがBobjにコピーされますが、Bobj.nameListはnullです。オブジェクトをディープコピーしてListやMapなどのコレクションを含むすべてのフィールドをコピーする方法はありますか?
私はどこかでDozerについて聞いたことがあります。
なぜ手動でコピーしないのですか? (例えば、コピーconstで) –
はい、Dozerはこの種のユースケースを意味します。デフォルトでは、異なるクラスタイプの2つのオブジェクト間で、同じプロパティ名を持つフィールドをマップします。必要に応じて、マッピングされるフィールド、マッピング方法、値の読み取りおよび設定方法を設定できます。あなたの特定のケースでは、デフォルトのマッピングは正常に動作します。 –
@Ahmet AYはい、私は現在手動で行っています。事は私の実際のユースケースを扱うもので、多くのフィールドが2つだけでなく手動で行っているので、異なった見た目では扱いにくいです。 –