代码之家  ›  专栏  ›  技术社区  ›  Dead Programmer

我们应该何时使用instanceof,何时不使用instanceof

  •  12
  • Dead Programmer  · 技术社区  · 14 年前

    我读过很多文章,但我还是不知道为什么不使用Instanceof。请告诉我你的想法。

    5 回复  |  直到 14 年前
        1
  •  15
  •   Community kfsone    7 年前

    我发现有必要用实例来暗示糟糕的设计。这是一个确定的标志,一个大的,复杂的开关风格的建设将遵循。在我看到的其他大多数时候,我们应该使用多态性而不是实例。参见战略模式。( relevant examples of use )

    唯一一次我发现我需要使用它是在实现 equals(Object o) .

        2
  •  4
  •   Wernight    14 年前

    从基类型强制转换为派生类型是一件坏事。如果您以这种方式使用instandof,它被认为是糟糕的设计,因为很难维护和阅读。见 http://www.javapractices.com/topic/TopicAction.do?Id=31 .

    使用 instanceof 因为你有一个 object 那应该是你喜欢的类型,这是很好的做法。

        3
  •  4
  •   Thilo    14 年前

    一个好的用例是检查标记接口,比如 RandomAccess .

        4
  •  0
  •   Sagar V    14 年前

    当您知道正在传递的对象时,就不需要使用它。如果涉及到任何歧义(如两个类实现相同的接口),则建议使用 instanceof 在继续之前。

        5
  •  0
  •   Tarski    14 年前

    当需要重写对象的equal s方法时,请使用instanceof,因为如果两个对象的类型不同,则这两个对象不能相等。我很少遇到需要instanceof的另一种情况——也许如果需要向下转换,但可能会抛出ClassCastException。