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

Dea*_*mer 14 java

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

bra*_*ter 16

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

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


Thi*_*ilo 6

一个好的用例是检查诸如RandomAccess之类的标记接口。


Wer*_*ght 5

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

使用instanceoffor equals(),因为您object应该有一个类型应为您的类型,这是一种好习惯。