instanceof检查与getClass检查

instanceof检查与getClass检查

Content #

Java中实现equals方法时,以Employee为例,会有以下两种用于判断对象类型的代码。 instanceof检查:

if (!(otherObject instanceof Employee))
    return false;

getClass检查:

if (getClass() != otherObject.getClass())
    return false;

什么时候应该用instanceof检查?什么时候应该使用getClass检查?

如果子类能够拥有自己的相等概念,则对称性需要将强制采用getClass进行检测。

如果由超类决定相等的概念,那么就可以使用instanceof进行检测,这样可以在不同的对象之间进行相等的比较。这种情况下,超类的equals方法应该声明成 final。

From #