2016-08-05 352 views
0

我有一些嵌套的對象。我們稱它們爲A,B和C.映射嵌套對象(java)

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中刪除。因此,我創建了DTO對象。

public class ADTO{ 
    private String name; 
    List<BDTO> bList; 
} 

public class BDTO{ 
    List<CDTO> cList; 
} 

public class CDTO{ 
    private String desc; 
} 

而且我會手動的地圖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 
} 

有沒有更簡單的方法(一些設計模式也許)來實現這樣的任務?想象一下,如果我們有更大的類或更多的對象來映射更深的嵌套,會發生什麼。只有很多代碼才能顯示/隱藏某些字段。 P.S.我將需要寫出至少3個不同的「觀點」這樣的對象,「觀點」的數量可以在未來增加。所以我正在尋找解決方案,以便在未來更輕鬆地添加新的「視圖」。

回答

0

嘗試這個開放源碼項目Dozer其針對這個問題,並使其更容易。