关于List存储对象问题

写项目时遇到了一个bug关于List循环储存对象的问题

部分代码截取如下:

          IndexCategoryVO thirdLevelCategoryVO = new IndexCategoryVO();
        for (GoodsCategory goodsCategory : tempGoodsCategories){
            thirdLevelCategoryVO.setCategoryId(goodsCategory.getCategoryId());
            thirdLevelCategoryVO.setCategoryLevel(goodsCategory.getCategoryLevel());
            thirdLevelCategoryVO.setCategoryName(goodsCategory.getCategoryName());
            thirdLevelCategoryVO.setParentId(goodsCategory.getParentId());
            thirdLevelCategoryVO.setCategoryRank(goodsCategory.getCategoryRank());

            thirdLevelCategoryVOS.add(thirdLevelCategoryVO);
        }

问题:循环后thirdLevelCategoryVOS集合里面全是保存相同的对象,本应该都不同

解决:如下,把此行代码放入循环内,

IndexCategoryVO thirdLevelCategoryVO = new IndexCategoryVO();
for (GoodsCategory goodsCategory : tempGoodsCategories){
            IndexCategoryVO thirdLevelCategoryVO = new IndexCategoryVO();
            thirdLevelCategoryVO.setCategoryId(goodsCategory.getCategoryId());
            thirdLevelCategoryVO.setCategoryLevel(goodsCategory.getCategoryLevel());
            thirdLevelCategoryVO.setCategoryName(goodsCategory.getCategoryName());
            thirdLevelCategoryVO.setParentId(goodsCategory.getParentId());
            thirdLevelCategoryVO.setCategoryRank(goodsCategory.getCategoryRank());

            thirdLevelCategoryVOS.add(thirdLevelCategoryVO);
        }

原因:List中存储的是对象的地址

 

总结:List中存储的是对象的地址,如果将对象清楚,从List中取出来的对象也为空值

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值