获取下面的异常,这通常是在我们使用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)
答案 0 :(得分:2)
我猜你至少有这些问题中的一个:
ArrayList
:add(…)
java.util.ArrayList
方法UnsupportedOperationException
会引发ArrayList
。查看堆栈跟踪表明您使用的AbstractList<E>.add(E)
甚至不会覆盖java.util.ArrayList
(return unmappedParams;
确实如此)。UnsupportedOperationException
)标记的行永远不会抛出java -version
。Collections.EMPTY_LIST
)。编辑问题后:现在很明显,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