首页 >Java >java教程 >如何正确重写 Java 中的 equals() 方法?

如何正确重写 Java 中的 equals() 方法?

DDD
DDD原创
2024-12-20 19:00:18901浏览

How to Properly Override the equals() Method in Java?

如何重写 Java 中的 equals() 方法

重写 equals() 方法对于自定义自定义相等比较行为至关重要Java 中的对象。这是帮助您有效地做到这一点的综合指南:

问题:

在给定的代码片段中,您在尝试使用 equals( 比较年龄字段时遇到错误),因为它是为 String 对象设计的。整数值需要使用 == 运算符。

解决方案:

要解决此错误,请使用 == 运算符来比较原始数据类型(例如年龄)。修改后的代码片段如下:

public boolean equals(People other){
    boolean result;
    if((other == null) || (getClass() != other.getClass())){
        result = false;
    } // end if
    else{
        People otherPeople = (People)other;
        result = name.equals(other.name) && age == other.age;
    } // end else

    return result;
} // end equals

补充说明:

1.重写过程:

  • 要重写 equals(),请使用 @Override 注解声明它。
  • 该方法应返回一个表示相等的布尔值,并采用相同的一个参数输入类。

2. Null 检查:

  • 始终使用 obj == null 检查 null 以避免 NullPointerExceptions。

3.类比较:

  • 使用 getClass() != other.getClass().

4.自定义比较逻辑:

    在 else 块中定义自定义比较逻辑。
  • 使用 equals() 进行字符串比较,使用 == 进行基本类型比较。
  • 考虑所有决定的相关字段

示例:

提供的示例覆盖 Person 类的 equals(),比较姓名和年龄是否相等:

public boolean equals(Object obj) {
    if (obj == null) {
        return false;
    }

    if (obj.getClass() != this.getClass()) {
        return false;
    }

    final Person other = (Person) obj;
    if ((this.name == null) ? (other.name != null) : !this.name.equals(other.name)) {
        return false;
    }

    if (this.age != other.age) {
        return false;
    }

    return true;
}

结论:

重写equals() 方法使您能够为自定义对象定义自定义的相等比较。通过仔细遵循提供的步骤和示例,您可以根据对象的特定属性有效地比较对象。

以上是如何正确重写 Java 中的 equals() 方法?的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn