繁体   English   中英

java.lang.UnsupportedOperationException但没有Arrays.asList()

[英]java.lang.UnsupportedOperationException but no Arrays.asList()

当我们使用Arrays.asList()从数组中分配列表时,通常会遇到以下异常,但是我在抛出该异常的代码中看不到任何使用Array的情况。 此外,使用new ArrayList()初始化列表。

    protected List getUnmapParam(PPlan pPlan){
        List unmappedParams = super.getUnmapParam(pPlan, ord);
            PricePlanExt apPP = null;

            if (pricePlan.getapID() != null) {
              apPP = getCurrentlyItem(pPlan.getID(), errorCodeH);
            }
            if (apPP != null) {
              List billParams = apPP.getBillParams();
              for (BillParam billParam : billParams) {
                if (billParam.getnameVal().equals("SD")) {
                  BillUnmapParamType unmappedParamType = getUnMappedType();
                  Attribute attr = mapSimpleParameter(unmappedParamType, apPP, billParam);
                  unmappedParams.add(attr);//Here it is being thrown
                }
              }
            }
            return unmappedParams;
          }

//Super method
protected List getUnmapParameters(Plan pPlan, Ord ord){
    return Collections.EMPTY_LIST;
  }

堆栈跟踪:

java.lang.UnsupportedOperationException at    
 java.util.AbstractList.add(AbstractList.java:148) at 
 java.util.AbstractList.add(AbstractList.java:108) at 
 java.som.impl.oshooks.BillingImpl.getUnmapParam(BillingImpl.java:121)

我猜您至少有以下问题之一:

  1. 导入错误的ArrayListjava.util.ArrayList add(…)方法不会抛出UnsupportedOperationException 查看您的堆栈跟踪表明,您正在使用的ArrayList甚至不会覆盖AbstractList<E>.add(E)java.util.ArrayList可以)。
  2. 您正在运行旧版本的代码:命令标记的行( return unmappedParams; )将永远不会抛出UnsupportedOperationException
  3. 您正在使用一个奇怪的JRE版本。 如果前两个建议不能解决问题,请添加JRE的确切版本(通过运行java -version )。

在问题编辑之后:现在很清楚, 关于列表是不可变答案是正确的:您尝试在Collections.EMPTY_LIST返回的列表中添加一些内容。 根据Javadoc,此列表是不可变的。

我认为这种例外的根源可能是列表是不可变的

请参阅Java文档

您的问题是因为有Collections.EMPTY_LIST

通常,当看到由add等引发UnsupportedOperationException时,通常表明某些代码正在尝试修改不可调整大小或不可修改的集合。

例如,Collections.EMPTY_LIST或Collections.SINGLETON_LIST(它们返回无法修改的集合)可以用作优化,但无意间传递给尝试修改它们的方法。

有关更详细的答案,请参见java.util.AbstractList.add上的UnsupportedOperationException。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM