问题
需要将一个原始对象包装成业务方需要的对象。
@Data
public static class TagDTO{
/**
* 标签名
*/
private String title;
/**
* 序号
*/
private Long sort;
/**
* 子类列表
*/
private Set<TagDTO> childrenList;
}
即
暂时无法在文档外展示此内容
这个用 BeanUtil.copyProperties() 不好整,因为内部还有个List。
嵌套的List,这样子就不能单纯看成一个属性,这个时候可以用递归解决。
办法
通过递归解决子类问题
public List<MaterialAttrsOptionsDTO> getChildMaterialAttrsOptionsDTO(Set<ExcelTagDTO.TagDTO> tagDTOS){
//递归终止条件
if(CollUtil.isEmpty(tagDTOS)){
return new LinkedList<>();
}
return tagDTOS.stream().map(a->{
MaterialAttrsOptionsDTO materialAttrsOptionsDTO = new MaterialAttrsOptionsDTO();
BeanUtil.copyProperties(a,materialAttrsOptionsDTO);
//递归获得子类
materialAttrsOptionsDTO.setChildren(getChildMaterialAttrsOptionsDTO(a.getChildrenList()));
return materialAttrsOptionsDTO;
}).collect(Collectors.toList());
}