Content #
Java中实现equals方法时,以Employee为例,会有以下两种用于判断对象类型的代码。 instanceof检查:
if (!(otherObject instanceof Employee))
return false;
getClass检查:
if (getClass() != otherObject.getClass())
return false;
什么时候应该用instanceof检查?什么时候应该使用getClass检查?
如果子类能够拥有自己的相等概念,则对称性需要将强制采用getClass进行检测。
如果由超类决定相等的概念,那么就可以使用instanceof进行检测,这样可以在不同的对象之间进行相等的比较。这种情况下,超类的equals方法应该声明成 final。