簡體   English   中英

Java BeanMap迭代器在iterator.remove()上引發UnsupportedOperationException

[英]Java BeanMap Iterator throws UnsupportedOperationException on iterator.remove()

我在調試使用迭代器在beanmap中的條目之間循環的應用程序時遇到問題。 當我在迭代器上使用remove()函數時,應用程序崩潰,並且我無法弄清原因。 過去工作正常。

該應用程序已經運行了一年多,沒有任何問題。 也許從未真正調用過.remove()函數,因為它位於if子句中,但我仍然認為它應該可以正常工作。

這是代碼:

BeanMap bm = new BeanMap(pKzlGd);
        Iterator entries = bm.entrySet().iterator();
        while (entries.hasNext()) {
            Map.Entry<Object, Object> entry = (Map.Entry<Object, Object>) entries.next();
            if (entry.getValue() instanceof Class) {
                entries.remove();
            }
        }

這基本上是我得到的StackTrace錯誤:

Stack trace: javax.faces.FacesException: #{aopUpload.upload}: java.lang.UnsupportedOperationException: remove() is not supported
         at com.sun.faces.application.ActionListenerImpl.processAction(ActionListenerImpl.java:118)
         at si.nkbm.bilbon.net.ExceptionActionListener.processAction(ExceptionActionListener.java:24)
         at javax.faces.component.UICommand.broadcast(UICommand.java:387)
         at org.ajax4jsf.component.UIInclude.broadcast(UIInclude.java:170)
         at org.ajax4jsf.component.AjaxViewRoot.processEvents(AjaxViewRoot.java:329)
         at org.ajax4jsf.component.AjaxViewRoot.broadcastEventsForPhase(AjaxViewRoot.java:304)
         at org.ajax4jsf.component.AjaxViewRoot.processPhase(AjaxViewRoot.java:261)
         at org.ajax4jsf.component.AjaxViewRoot.processApplication(AjaxViewRoot.java:474)
         at com.sun.faces.lifecycle.InvokeApplicationPhase.execute(InvokeApplicationPhase.java:82)
         at com.sun.faces.lifecycle.Phase.doPhase(Phase.java:100)
         at com.sun.faces.lifecycle.LifecycleImpl.execute(LifecycleImpl.java:118)
         at javax.faces.webapp.FacesServlet.service(FacesServlet.java:265)

據您所見,您使用BeanMap Map提供的迭代器似乎不支持刪除條目。 我想您之前從未通過過if語句。 此行為是預期的。 文檔中提到實際上不允許刪除條目。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM