在 Java 中,要覆蓋 equals 方法以滿足特定需求,你需要遵循以下步驟:
equals 方法。確保它接受一個 Object 類型的參數并返回一個 boolean 值。equals 方法中,首先檢查傳入的對象是否為 null。如果是,則返回 false。getClass() 方法或 instanceof 關鍵字進行檢查。如果不是,則返回 false。false。如果所有字段都相等,則返回 true。hashCode 方法。當你覆蓋 equals 方法時,通常也需要覆蓋 hashCode 方法,以便在使用散列數據結構(如 HashSet 和 HashMap)時能正確地工作。以下是一個示例,展示了如何覆蓋 equals 和 hashCode 方法:
public class Person {
private String name;
private int age;
public Person(String name, int age) {
this.name = name;
this.age = age;
}
@Override
public boolean equals(Object obj) {
if (obj == null) {
return false;
}
if (!(obj instanceof Person)) {
return false;
}
Person other = (Person) obj;
return this.age == other.age && (this.name == null ? other.name == null : this.name.equals(other.name));
}
@Override
public int hashCode() {
int result = 17;
result = 31 * result + (name == null ? 0 : name.hashCode());
result = 31 * result + age;
return result;
}
}
在這個示例中,我們創建了一個名為 Person 的類,其中包含 name 和 age 字段。我們覆蓋了 equals 方法以比較兩個 Person 對象的 name 和 age 字段。我們還覆蓋了 hashCode 方法,以便在使用散列數據結構時能正確地工作。