在 Java 中,equals()
方法是用于比較兩個對象是否相等的。默認情況下,equals()
方法比較的是兩個對象的內存地址,而不是它們的屬性。要自定義 equals()
方法以比較對象的屬性,你需要遵循以下步驟:
equals()
方法。下面是一個示例,展示了如何自定義 Person
類的 equals()
方法:
public class Person {
private String name;
private int age;
public Person(String name, int age) {
this.name = name;
this.age = age;
}
// 其他 getter 和 setter 方法
@Override
public boolean equals(Object obj) {
// 檢查是否為同一個實例
if (this == obj) {
return true;
}
// 檢查是否為 null 或者不是同一個類
if (obj == null || getClass() != obj.getClass()) {
return false;
}
// 將傳入的參數強制轉換為 Person 類型
Person person = (Person) obj;
// 比較屬性是否相等
if (age != person.age) {
return false;
}
if (name != null ? !name.equals(person.name) : person.name != null) {
return false;
}
// 如果所有屬性都相等,則返回 true
return true;
}
}
在這個示例中,我們自定義了 Person
類的 equals()
方法,使其根據 name
和 age
屬性來判斷兩個 Person
對象是否相等。注意,我們還需要重寫 hashCode()
方法,以確保當 equals()
方法返回 true
時,兩個對象的哈希碼也相等。這對于某些集合類(如 HashSet
和 HashMap
)非常重要,因為它們依賴于哈希碼來存儲和檢索對象。