当我们想方便 在list 添加数据时候有时候 会将同一对象稍作修改 填入list中 代码如下 错误案例:
for (OrderVO orderVO : orderVOList) {
orderVO.setBrokerageTwoTrue(false);
result.add(orderVO);
orderVO.setBrokerage(orderVO.getBrokerageTwo());
orderVO.setBrokerageTwoTrue(true);
result.add(orderVO);
}
测试环境运行结果不符合我写的逻辑的时候 我debug调试了一下,发现 后面对这个对象修改 对前面已经插入的对象 也会修改 !!!
为什么会这样呢 因为在这个list中指引的都是同一对像 如果对一个修改 其他的也是会改变的 这是一个坑 希望大家在插入list时 都是新的对象 这样可以避免很多错误~
正确的写法
//工具克隆 第一个参数是cope数据源 ,第二个是新的对象目标 此方法方便快捷
BeanUtil.copyProperties(orderVO,orderVO2);
这里导的是阿里的com.alibaba.fastjson; 这个也是copy对象的 至于是深克隆 还是浅克隆 笔者暂时未调试 你们可以试试哈
JSON.parseObject(JSON.toJSONString(t),cls);
//还有其他方法 感觉不太好用 比如 浅克隆 深克隆 需要对方法重写 这里暂不推荐咯~