如果您创建自己的Iterable
容器类并java.util.Iterator
在其元素上检索 a ,是否存在任何编码模式,根据该编码模式,容器中的任何进一步添加元素都不应从Iterator
? 我在想“不可能,绝对不是,事实上Iterator
应该能够遍历所有元素,而不管添加如何。”
或者,如果在添加新内容后调用fail-fastIterator
是否应该抛出异常?next()
自从我用 Java 编码以来已经有一段时间了,但这里有些东西很臭。
next()
如果在添加新内容后调用快速失败的迭代器,是否可能会抛出异常?
正确的。我相信如果您尝试使用 Java 的任何内置Iterable
s 来执行此操作,您将获得ConcurrentModificationException
该异常的整个Javadoc值得一读。它非常简洁。重点不是引用整个事情,而是不会快速失败的迭代器“ [风险] 在未来不确定的时间出现任意的、非确定性的行为。 ”
用户迈克尔在上面的评论中回答了我的问题。快速失败的迭代器应该完全是后者。现在,当人们应该更喜欢 Fail-fast 而不是 Fail-safe 时,我不确定,但鉴于容器在定义上是可变的,我相信 Fail-Fast 可能是唯一的出路。