【发布时间】:2018-10-30 09:23:29
【问题描述】:
【问题讨论】:
-
我已经编辑了问题
-
表示有一个标识符被使用了3次。第二次和第三次使用都必须与第一次匹配,否则您的程序将无法运行。
【问题讨论】:
与这段代码sn-p有关:
void cancelAll(Collection<TimerTask> c) {
for (Iterator<TimerTask> i = c.iterator(); i.hasNext(); )
i.next().cancel();
}
这就是说,当你在声明之后引用迭代器(i.hasNext();i.next())时,你可能会不小心引用范围内的其他迭代器变量,或者省略一个,或者调用i.next()超过一次在循环中,或类似的东西。
相比之下,for-each 循环:
void cancelAll(Collection<TimerTask> c) {
for (TimerTask t : c)
t.cancel();
}
你没有引用迭代器(你不能引用它),所以你不能犯同样的错误。
【讨论】: