gpt4 book ai didi

java - 重写父类(super class)的 equals 方法

转载 作者:行者123 更新时间:2023-12-01 22:49:31 27 4
gpt4 key购买 nike

当我们从父类(super class)重写 equals() 方法时,需要 hashcode() 方法的新实现。 equals() 和 hashcode() 之间的约定得到保留。

最佳答案

equalshashCode 方法将从父类(super class)继承(就像任何其他方法一样)。

如果这些仍然适合子类,您可以保持原样。

JDK 中有相关示例:

  • Stack 扩展 Vector 扩展 AbstractList
  • Stack 只是从 Vector 继承 equals
  • Vector 覆盖 AbstractList 中的 equals,但仅添加 synchronized,然后仅调用 super .等于.
  • ArrayList 也扩展了 AbstractList,但它使用遵循相同逻辑的实现覆盖了 equals,但可以更高效,因为它知道至少有一个参与者是 ArrayList

但请记住

  • 您现在将使用相同的代码比较所有组合中的 Super <-> Super、Super <-> Sub、Sub <-> Sub 实例
  • this 实际上可以是子类时,诸如 this.getClass() 之类的内容可能会返回意外的结果

如果这会导致您的比较逻辑出现问题,则由您决定。

关于java - 重写父类(super class)的 equals 方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58461837/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com