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