关于嵌套for循环中 没有new对象的问题记录

背景介绍:

工作中在改一个需求时,用到了嵌套for循环 最终结果要返回一个对象列表,为了省事 内存for循环内没有new对象。最终返回结果出现了bug。

分析:

由于最内层加的for循环中没有new一个对象 导致 最内层的for循环 在符合条件循环时实际都是在循环设置同一个对象,导致出了问题。

示例:

for (RespDto dto : dtoList) {
    ExportData exportData = new BlueBillingRecordInfoExportData();
exportData.setA("***");
exportData.setB("***");
exportData.setC("***");
if(条件1){
     for (int i = 0; i < itemList.size(); i++) {
          ExportData exportData2 = new BlueBillingRecordInfoExportData();
BeanUtils.copyProperties(exportData,exportData2);
exportData2.setD("***"); 
exportData2.setE("***");
exportDataList.add(exportData2);            
        }
    }else {
        exportDataList.add(exportData);
    }

结论:每一层for循环里都需要new一个对象,从而保证循环过程中不会一直在对一个对象的属性进行覆盖赋值, 可以通过BeanUtils.copyProperties(A,B)方法把外一层for循环中对象设置的字段值复制进新对象。

  • 7
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值