(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(","));
本文作者:Joseph·Jonardo
本文链接:https://www.cnblogs.com/Joseph-Jonardo/p/18009406
版权声明:本作品采用知识共享署名-非商业性使用-禁止演绎 2.5 中国大陆许可协议进行许可。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步