如果我实现 equals()
和 hashCode()
在父类和子类中,是否有必要调用 super.equals()
在equals()
在子类中,例如
public boolean equals(Object obj) {
if (obj.getClass() != ChildClass.class) {
return false;
}
return super.equals() && this.var == ((ChildClass) obj).var;
}
我假设父类不是 Object 并且给出了 equals 和 hashCode 的正确定义。
最佳答案
不,这不是必需的,而且可能是错误的。事实上,您覆盖 equal
的部分原因是因为 super.equals
没有给出正确的行为(对吗?)。
或者换句话说,如果 super.equals
给出了正确的行为,您可能不需要麻烦重写它。
但是如果您要覆盖 equals
,那么是的,您也需要覆盖 hashCode
。
关于java - 在子类中调用 super.equals 和 super.hashCode?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10253727/