java - 在子类中调用 super.equals 和 super.hashCode?

标签 java equals hashcode

如果我实现 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/

相关文章:

java - 在 Java 中对 String 和 Object 使用 equals() 方法

java - 取消覆盖 hashCode

java - 为什么字符串类根据给定的字符串值创建哈希码?

java - 我在使用驱动程序类中的一个类中的变量时遇到一些问题

java - TestNG - 如何断言两个列表相等而忽略顺序?

Java Excel分组数据

javascript - JS : Entering a TRUE value into a prompt box and having it alert its variable

java - 从多个 Java 字符串对象创建散列

java - Android:从 XML 颜色常量以编程方式设置颜色

Java 作用域问题