[英]Mapping nested objects (java)
我有一些嵌套的對象。 我們稱它們為A,B和C。
public class A {
private String name;
private String desc;
//......{some other fields}
private List<B> bList;
}
public class B {
private String name;
private String desc;
//......{some other fields}
private List<C> cList;
}
public class C {
private String name;
private String desc;
......{some other fields}
}
現在,我只想映射那些對象的某些屬性。 假設我只想要A的名稱和B列表,只想要B的C列表和C的desc。因此,我創建了DTO對象。
public class ADTO{
private String name;
List<BDTO> bList;
}
public class BDTO{
List<CDTO> cList;
}
public class CDTO{
private String desc;
}
我將使用類似於以下的代碼手動將A映射到ADTO,將B映射到BDTO,將C映射到CDTO:
private ADTO map(A a)
ADTO adto = new ADTO();
List<BDTO> bDTOList = new ArrayList<>();
adto.setName(a.getName());
for (B b : a.getBlist()){
BDTO bdto = new BDTO();
bdto.setCList = map(b.getCList());
bDTOList.add(bdto);
}
adto.setBList(bDTOList);
return adto;
}
private List<CDTO> map(List<C>){
........ANOTHER BORING MAPPING
}
有沒有更簡單的方法(可能是某些設計模式)來實現這一任務? 想象一下,如果我們擁有更大的類或更多的對象以進行更深層的嵌套映射,將會發生什么。 僅為了顯示/隱藏某些字段而編寫的代碼很多。 附言:我將需要為此類對象編寫至少3個不同的“視圖”,並且將來“視圖”的數量可能會增加。 因此,我正在尋找將來可以更輕松地添加新“視圖”的解決方案。
嘗試使用此開源項目Dozer來解決此問題並使其變得更容易。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.