写项目时遇到了一个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中取出来的对象也为空值