簡體   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