Java BeanMap Iterator 在 iterator.remove() 上抛出 UnsupportedOperationException

标签 java crash iterator unsupportedoperation

我在调试使用迭代器循环访问 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 语句。此行为是预期的。 Documentation提到实际上不允许删除条目。

关于Java BeanMap Iterator 在 iterator.remove() 上抛出 UnsupportedOperationException,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57885556/

相关文章:

c++ - 线程安全与迭代器有效性

java - 尝试在 Android 中生成 PDF 时出现 FileNotFoundException

java - 如何获取当年的任何特定日期

android检查字符串是否包含0-9以外的字符

python - Next() 跳过列表中的实际项和下一项,而它应该只跳过实际项

c++ - OutputIterator 到底是什么以及如何构建一个用于 CGAL Kd_tree::search 的?

java - 也可序列化对象属性

java - 如何在 JAVA 中重写 Exception 类方法

ubuntu 16.04.1 LTS 在启动 android 模拟器时崩溃

swift - "-[UIBarButtonItem selectedSegmentIndex]: unrecognized selector sent to instance"用于顶部 UIBar 中的分段控件