什么时候应该使用instanceof,何时不使用instanceof

时间:2010-09-23 09:11:37

标签: java

我已经阅读了各种文章,但我仍然不知道为什么不应该使用instanceof.kindlylet我知道你的想法。

5 个答案:

答案 0 :(得分:15)

我发现需要在糟糕的设计中使用instanceof提示。这是一个肯定的迹象,一个大而复杂的开关式结构将随之而来。在我看到它使用的大多数时候,我们应该使用多态而不是instanceof。请参阅策略模式。 (relevant examples of use

我发现我需要使用它的唯一时间是实施equals(Object o)

答案 1 :(得分:4)

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

instanceof用于equals(),因为您的object应该是您的类型,这是一种很好的做法。

答案 2 :(得分:4)

一个好的用例是检查RandomAccess等标记接口。

答案 3 :(得分:0)

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

答案 4 :(得分:0)

当需要覆盖Object的equals方法时,使用instanceof,如果它们属于不同类型,则视为两个对象不能相等。我很少遇到需要instanceof的另一种情况 - 也许如果需要向下转换但可能抛出ClassCastException。