【问题标题】:On which condition will IllegalStateException be thrown?在什么情况下会抛出 IllegalStateException?
【发布时间】:2012-04-23 04:24:59
【问题描述】:

当使用迭代时,IllegalStateException 会在什么条件下被抛出?我正在做一个作业,它是多项选择:

a) 在调用next 之后调用remove
b) 在调用previous后调用next
c) 在调用remove后调用remove
d) 调用previous 后调用remove

我在“API docs”中发现,如果next 方法尚未被调用,或者remove 方法在最后一次调用next 方法之后已经被调用。

所以答案必须是“a”,但有人告诉我这是错误的。为什么我的推理是错误的,正确答案是什么?

【问题讨论】:

  • 天哪! :) c 似乎超过了指示。 :) 但是,下次,您介意提供一些上下文吗?
  • @Snicolas 我知道,对吧?这种事后删除有点令人不安。 “IllegalStateException 表示方法已在非法或不适当的时间被调用。”
  • 好的,下次我会尝试为您提供一些背景信息。对不起!还是谢谢

标签: java exception iterator illegalstateexception


【解决方案1】:

您有一个列表[a, b, c, d, e]。一个指针N 一开始就没有指向任何东西。这是 Java 中迭代器的标准起始位置。

场景 A) - 调用 nextN 现在指向 a。呼叫removea 消失了,列表为[b, c, d, e]N 没有指向任何内容。

场景 B) 调用 previousN 现在指向 e。呼叫nextN 现在指向a

场景 C) 调用 nextN 指向 a。呼叫removea 不见了,N 什么都没有。调用 remove,IllegalStateExceptionis thrown.N` 没有指向任何东西,因此无法删除任何内容。

场景 D) 调用 previousN 指向 e。呼叫removee 不见了,N 没有指向任何东西。

场景 E) 调用 removeN 没有指向任何东西,所以 IllegalStateException 被抛出。

【讨论】:

    猜你喜欢
    • 2016-07-16
    • 2019-11-23
    • 2011-01-10
    • 2011-04-17
    • 2010-12-29
    • 1970-01-01
    • 1970-01-01
    • 2021-07-19
    • 1970-01-01
    相关资源
    最近更新 更多