首頁 >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