前言
针对 BeanUtils.copyProperties的使用(深拷贝,浅拷贝)
这块【子对象就一定不能用BeanUtils么】内容的补充吧?遇到的情况就是,有很多属性都需要浅拷贝,但是子对象里面某一个两字段值不对应,赋值不上。就想着用遍历获取把有对象属性值相同为条件,来获取值设置值,结果报了类型强转异常。
解决方法
// 我这遇到的是 子对象是集合泛型对象
public class Page<T> implements IPage<T> {
protected List<T> records = Collections.emptyList();
// ....属性
}
public class MainTest {
public void get() {
// 源对象集合,不是PageCustQryResp对象。respPage 和 pageCustQryRespPage对象中集合泛型不一致。
DataResp respPage = getDataResp();
Page<PageCustQryResp> pageCustQryRespPage = new Page<>();
// 先把属性拷贝过去
BeanUtil.copyProperties(respPage, pageCustQryRespPage);
// pageCustQryRespPage 此时这个对象里面是是拷贝的对象不是PageCustQryResp对象
ArrayList<PageCustQryResp> pageCustQryRespList = new ArrayList<>();
// **** 遍历源对象,进行属性进行重新赋值 ****
respPage.getRecords().forEach(recordsResp -> {
PageCustQryResp e = new PageCustQryResp();
e.setRegionName(recordsResp.getBelCity()); // 这个就是不对相应的属性
pageCustQryRespList.add(e);
});
// 换成源对象换成 需要的对象【PageCustQryResp】
pageCustQryRespPage.setRecords(pageCustQryRespList);
}
}
// 解决的方法:获取