gpt4 book ai didi

java - 覆盖 Object 类的 equal 方法

转载 作者:行者123 更新时间:2023-11-29 10:16:05 25 4
gpt4 key购买 nike

好的,假设您有两个类:ClassAClassB

  • ClassA 扩展 ObjectClassB 扩展 ClassA
  • ClassA 没有参数构造函数
  • ClassB 有一个整型变量 x 和一个带有初始化 x 的整型参数的构造函数
  • ClassA 不会覆盖 equals 它继承自 Object
  • ClassB 覆盖 equals,这样如果整数 x 在两个对象中具有相同的值,则 ClassB 的两个对象被认为是相等的.

      //In Class B you have this method:
    public boolean equals (Object obj) {
    if (obj == null) {
    return false;
    }
    if (obj.getClass() != this.getClass()) {
    return false;
    }
    if (!super.equals(obj)) {
    return false;
    }

    B b = (B) obj;

    return this.x == b.x;
    }

如果你要运行这段代码,主要是

    B b1 = new B(1);
B b2 = new B(1);
System.out.println(b1.equals(b2));

我相信会打印“false”,但我正在尝试理解原因。也许我没有完全理解覆盖的概念,但我只是想因为 B 应该覆盖 Object.equals 方法,所以它可以确保 x 字段相同.

我遗漏了什么似乎是“错误的”?

最佳答案

你应该省略

if (!super.equals(obj))
{
return false;
}

因为这将使用默认的 equals() 方法(检查对象身份)

关于java - 覆盖 Object 类的 equal 方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17775560/

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