(bug记录)java.lang.UnsupportedOperationException: null
报错样式
java.lang.UnsupportedOperationException: null
java代码
if (onlineRenewalConditionDTOList != null && onlineRenewalConditionDTOList.size() > 0) {
for (OnlineRenewalConditionDTO onlineRenewalConditionDTO : onlineRenewalConditionDTOList) {
if (ObjectUtils.isNotEmpty(onlineRenewalConditionDTO.getStartExpiryTime()) && ObjectUtils.isNotEmpty(onlineRenewalConditionDTO.getEndExpiryTime())) {
SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd");
Date startTime = format.parse(onlineRenewalConditionDTO.getStartExpiryTime());
Date endTime = format.parse(onlineRenewalConditionDTO.getStartExpiryTime());
ExpireTimeRangeDTO expireTimeRangeDTO = new ExpireTimeRangeDTO(startTime, endTime);
if (ObjectUtils.isEmpty(renewalStrategyCalcConfigDTO.getExpireTimeRangeDTOList())) {
renewalStrategyCalcConfigDTO.setExpireTimeRangeDTOList(new ArrayList<>());
}
renewalStrategyCalcConfigDTO.getExpireTimeRangeDTOList().add(expireTimeRangeDTO);
}
if (ObjectUtils.isNotEmpty(onlineRenewalConditionDTO.getRenewalAnnualCycles())) {
List<String> cyclesList = new Arrays.asList(onlineRenewalConditionDTO.getRenewalAnnualCycles().split(","));
if (ObjectUtils.isEmpty(renewalStrategyCalcConfigDTO.getRenewalAnnualCycles())) {
renewalStrategyCalcConfigDTO.setRenewalAnnualCycles(cyclesList);
} else {
renewalStrategyCalcConfigDTO.getRenewalAnnualCycles().addAll(cyclesList);
}
}
if (ObjectUtils.isNotEmpty(onlineRenewalConditionDTO.getMinInsurantAge()) && ObjectUtils.isNotEmpty(onlineRenewalConditionDTO.getMaxInsurantAge())) {
InsurantAgeRangeDTO insurantAgeRangeDTO = new InsurantAgeRangeDTO(onlineRenewalConditionDTO.getMinInsurantAge(), onlineRenewalConditionDTO.getMaxInsurantAge());
if (ObjectUtils.isEmpty(renewalStrategyCalcConfigDTO.getInsurantAgeRangeDTOList())) {
renewalStrategyCalcConfigDTO.setInsurantAgeRangeDTOList(new ArrayList<>());
}
renewalStrategyCalcConfigDTO.getInsurantAgeRangeDTOList().add(insurantAgeRangeDTO);
}
}
}
报错解释
这个错误表明代码尝试在一个不支持特定操作的对象上执行该操作。具体来说,报告的异常是"java.lang.UnsupportedOperationException",通常发生在尝试修改不可变对象或不支持修改操作的对象时。
当在程序中尝试对不可变对象进行修改时,或者对不支持修改的数据结构进行修改操作时,就会抛出这个异常。常见的情况包括尝试对Java中的Collections类中的不可变集合进行添加或删除操作,或者尝试修改只读属性等。
具体来说,就是在第14行代码中new Arrays.asList事实上创建的是Arrays的内部类ArrayList,而这个类并没有重写addAll方法,即它是不支持修改操作的。
参考链接:java.lang.UnsupportedOperationException: null异常处理-CSDN博客
解决方案
只需要二次转化 ArrayList<>即可,即将14行代码改成下面代码。
List<String> cyclesList = new ArrayList<>(Arrays.asList(onlineRenewalConditionDTO.getRenewalAnnualCycles().split(","));