(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(","));
posted @ 2024-02-06 11:12  Joseph·Jonardo  阅读(147)  评论(0)    收藏  举报