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

时间:2015-05-15 15:21:21

标签: java arrays exception arraylist

获取下面的异常,这通常是在我们使用Arrays.asList()从数组中分配列表时出现的,但我无法在抛出它的代码中看到任何Arrays用法。此外,使用新的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;
  }

stacktrace:

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)

3 个答案:

答案 0 :(得分:2)

我猜你至少有这些问题中的一个:

  1. 导入错误的ArrayListadd(…) java.util.ArrayList方法UnsupportedOperationException会引发ArrayList。查看堆栈跟踪表明您使用的AbstractList<E>.add(E)甚至不会覆盖java.util.ArrayListreturn unmappedParams;确实如此)。
  2. 您正在运行旧版本的代码:您的命令(UnsupportedOperationException)标记的行永远不会抛出java -version
  3. 您使用的是奇怪的JRE版本。如果前两个建议无法解决问题,请添加您的JRE的确切版本(通过运行Collections.EMPTY_LIST)。
  4. 编辑问题后:现在很明显,answer about the list being immutable是正确的:您尝试将某些内容添加到COUNTIFS返回的列表中。根据{{​​3}},这个列表是不可变的。

答案 1 :(得分:1)

我认为这种异常的根源可能是List是不可变的

请参阅this

的java文档

答案 2 :(得分:1)

您的问题是由于Collections.EMPTY_LIST

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

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

有关更详细的答案,请参阅UnsupportedOperationException at java.util.AbstractList.add