创建一个对象反复使用该对象即是同一个地址,每次创建对象,在进行操作。即每次操作的地址不同

it2023-05-01  75

List<SysPressureAndClassName> sysPressureAndClassNames = new ArrayList<>(); if(CollectionUtils.isNotEmpty(sortedList)){ for (SysMinePressureData sysMinePressureData:sortedList) { SysPressureAndClassName sysPressureAndClassName = new SysPressureAndClassName(); sysPressureAndClassName.setClassName(((SysMinePressureDataBase)sysMinePressureData).getClassName()); if(StringUtils.isNotBlank(sysMinePressureData.getMaxPressure())){ sysPressureAndClassName.setMaxPressure (JSON.parseObject(sysMinePressureData.getMaxPressure(), new TypeReference<Map<String, Integer>>() {})); } if(StringUtils.isNotBlank(sysMinePressureData.getMinPressure())){ sysPressureAndClassName.setMinPressure (JSON.parseObject(sysMinePressureData.getMinPressure(), new TypeReference<Map<String, Integer>>() {})); } sysPressureAndClassName.setStartTime(sysMinePressureData.getRecordStartTime()); sysPressureAndClassName.setEndTime(sysMinePressureData.getRecordEndTime()); sysPressureAndClassNames.add(sysPressureAndClassName); } }

最后执行结果,数据不同。

注意而如果一旦在循环外创建对象时,对对象操作时,用到的就是同一地址。因此得到的数据会不准确。因为同一地址,只要对对象赋值有改变,那么之前的对象的值也会随之改变。 下面截图证明 比如说再循环外创建对象

而因为每次操作的对象都是同一地址

最终得到的结果

在这里,还是学到了一点知识。 这辈子坚持与不坚持都不可怕,怕的是独自走在坚持的道路上。

最新回复(0)