Java的equals方法是用于比較對象的值是否相等的方法。equals方法是從Object類繼承而來的,因此在自己定義一個類時需要重寫這個方法,以便使得比較自己定義類的兩個對象的值的時候正確。在重寫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 (this == obj) { return true; } if (obj instanceof Person) { Person person = (Person) obj; return Objects.equals(this.name, person.name) && this.age == person.age; } return false; } @Override public int hashCode() { return Objects.hash(name, age); } }
在這個例子中,我們重寫了equals和hashCode方法,讓它們根據Person對象的name和age字段進行比較。我們使用了Objects類的equals和hash方法來處理空指針和比較兩個對象值的情況。同時,我們還使用了instanceof運算符來判斷傳入的對象是否是Person類型的。
需要注意的是,如果兩個對象的equals方法返回true,那么它們的hashCode方法必須返回相同的值。hashCode方法的作用是在集合中尋找該對象存儲的位置,在兩個對象的hashCode值不同的情況下,它們不會被認為是相等的。