问题描述:
其实就是我在for循环外面场景对象。想着可以节省内存,可是最终返回list的对象都是最后一个对象对应的数据,代码如下:
List<SelectSelfTestReportVo.ConfigColumns.ConfigTopics> configTopicsList=new ArrayList<>();
SelectSelfTestReportVo.ConfigColumns.ConfigTopics configTopicsOne = new SelectSelfTestReportVo.ConfigColumns.ConfigTopics();
for (ConfigTopic configTopic : configTopics) {
BeanUtils.copyProperties(configTopic, configTopicsOne);
configTopicsList.add(configTopicsOne);
}
实际发现,循环外面创建对象,引用对象地址一直不变,当里面数据改变时,之前引用的对象地址也是同一个,所以会造成最终list里面多个对象数据都一样,所以要保证后面数据不影响之前对象数据,创建对象要放在循环里面。其实就是细节问题仔细思考都知道,记录一下(主要为了开始养成写文档的好习惯)
List<SelectSelfTestReportVo.ConfigColumns.ConfigTopics> configTopicsList=new ArrayList<>();
for (ConfigTopic configTopic : configTopics) {
SelectSelfTestReportVo.ConfigColumns.ConfigTopics configTopicsOne = new SelectSelfTestReportVo.ConfigColumns.ConfigTopics();
BeanUtils.copyProperties(configTopic, configTopicsOne);
configTopicsList.add(configTopicsOne);
}