2

我刚刚发现了这个运算符,我想知道它是否可以安全使用。我的意思是,在 java 中,我们的老师总是告诉我们避免使用 instanceof(),因为它破坏了多态性并且经常显示出糟糕的编码。

提前Thks。

4

2 回答 2

4

它是安全的'。至少使用此检查更安全,而不是仅强制转换并假定类型!您可能更喜欢使用as运算符,如果合适,它会强制转换为所需的类型,否则返回 null。只记得检查空值。

但通常,显式类型检查表明您的模型有些地方不太正确。有时这是不可避免的,但如果你经常这样做,我会退后一步,重新考虑你的模型。

于 2012-07-03T08:43:22.830 回答
2
if (obj is FooObject)
{
    ((FooObject)obj).Foo();
}

相当于

if (obj instanceof FooObject) {
    ((FooObject)obj).foo();
} 
于 2012-07-03T08:44:43.097 回答