我们在一个大型项目中使用GWT。在某些情况下,这个代码可能会产生NoSuchElementException异常:
for (Object o: myList) {
}
里面没有对ArrayList进行修改。
但是这是最近才发生的。
在生成的应用程序源代码中,我发现:
var context, context$iterator, operation;
operation = doDeserialize(this$static, ctx, json);
for (context$iterator =
new java_util_AbstractList$IteratorImpl_AbstractList$IteratorImpl__Ljava_util_AbstractList_2V(this$static.jetbrains_jetpad_otmodel_ot_persistence_OperationPersistenceContext_myContextDelegates);
context$iterator.java_util_AbstractList$IteratorImpl_i < context$iterator.java_util_AbstractList$IteratorImpl_this$0.size__I();
) {
context = java_util_AbstractList$IteratorImpl_$next__Ljava_util_AbstractList$IteratorImpl_2Ljava_lang_Object_2(context$iterator);
}
首先,这段代码返回true:iterator.i < iterator.size();
但是在下一行(在 .next()中)
,这段代码也会返回true:iterator.i >= iterator.size();
我只能在Chrome中重现此问题。