我正在查看一些大量使用Java instanceof
运算符的代码。我会反对细节的诱惑,因为这是一个普遍的问题。 instanceof
让我想起了c ++的动态演员,以及我很久以前读过的关于它的建议,如果你认为你需要它,可能你的模型已经关闭了。这仍然是传统智慧吗?它适用于Java的instanceof
吗?
答案 0 :(得分:12)
是的,你走在正确的轨道上。虽然instanceof
肯定有其用途,但大量使用通常表明您的班级设计有缺陷。
答案 1 :(得分:3)
在Java中,可以/应该使用泛型来减少instanceof
个关键字的数量。这样,只需要检查编译时未知的少数几个。也就是说,instanceof
不是goto
之类的东西 - 它不会让你的控制流程变得太乱(尽管如果你不小心它会引入许多额外的变量)。
我经常使用instanceof
,但如果有很多,那么我会认为它是代码味道。诀窍是想出更好的东西;如果可以,那么使用instanceof
可能是错误的。我不知道有关一般情况下使用是好还是坏的方案。 instanceof
之后的演员可能比关键字本身更容易受到伤害。