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



我在调试使用迭代器循环浏览 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();
}
}

这基本上是我得到的堆栈跟踪错误:

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声明。此行为是预期的。文档提到实际上不允许删除条目。

最新更新