首頁 >Java >java教程 >如何正確重寫 Java 中物件比較的 equals 方法?

如何正確重寫 Java 中物件比較的 equals 方法?

Linda Hamilton
Linda Hamilton原創
2024-12-22 18:32:09802瀏覽

How Do I Correctly Override the `equals` Method for Object Comparison in Java?

理解 Java 中的物件相等性

Java 中為了比較兩個物件的相等性,經常使用 equals 方法。在所描述的場景中,目標是重寫具有姓名和年齡欄位的 People 類別的 equals 方法,以方便 People 物件之間的比較。

提出的初始實作對年齡欄位使用 equals 方法,該方法是整數類型。然而,如所指出的, equals 方法是專門為比較 String 物件而設計的。

解:比較整數欄位

要比較整數欄位,建議使用使用 == 運算子取代 equals 方法。 == 運算子直接比較原始資料類型的值,而不是呼叫 equals 方法。

正確實作Equals

equals 方法的正確實作People 類別應如下所示:

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

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

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

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

    return true;
}

在此實作:

  • 它首先檢查傳遞的物件是否為null、不同的類別或具有null名稱欄位。
  • 如果這些檢查通過,則使用 == 運算子進行比較年齡欄位。
  • 如果所有比較結果都為 true,則傳回 true,否則傳回 false。

以上是如何正確重寫 Java 中物件比較的 equals 方法?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn