繁体   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