簡體   English   中英

映射嵌套對象(java)

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM