Java の equals() メソッドはどのように使いますか?
Javaでは、equals() メソッドは2つのオブジェクトが等しいかどうかを比較するために使用されます。equals() メソッドはObjectクラスのメソッドであり、すべてのクラスはObjectクラスを継承しているため、すべてのクラスがequals() メソッドを呼び出すことができます。equals() メソッドのデフォルトの実装は、2つのオブジェクトの参照が等しいかどうかを比較し、つまり2つのオブジェクトが同じオブジェクトであるかどうかを判断します。
独自メソッドを再定義して、2つのオブジェクトの内容を比較したい場合は、equals() メソッドを再定義する必要があります。通常、カスタムクラス内でequals() メソッドを再定義して、カスタムのオブジェクト比較ロジックを実装する必要があります。
equals() メソッドをオーバーライドする一般的な手順は次の通りです。
- パラメータがnullであるかどうかを判断し、nullであればfalseを返す。
- 同じ参照かどうかを判断し、同じ参照であればtrueを返します。
- 同じ種類かどうかを判断し、異なる場合にはfalseを返します。
- 自分のクラスのオブジェクトにパラメータオブジェクトを変換する。
- すべての属性が等しいかどうかを比較し、すべての属性が等しい場合はtrueを返し、それ以外の場合はfalseを返します。
以下は、equals() メソッドを上書きする方法を示したサンプルコードです。
public class Person {
private String name;
private int age;
@Override
public boolean equals(Object obj) {
if (this == obj) {
return true;
}
if (obj == null || getClass() != obj.getClass()) {
return false;
}
Person person = (Person) obj;
if (age != person.age) {
return false;
}
return name.equals(person.name);
}
public static void main(String[] args) {
Person person1 = new Person("Alice", 30);
Person person2 = new Person("Alice", 30);
System.out.println(person1.equals(person2)); // 输出为true
}
}
上記のコードでは、Personクラスのequals()メソッドをオーバーライドし、Personオブジェクトのnameとageプロパティが等しいかどうかを比較しました。mainメソッドでは、nameとageプロパティが等しい2つのPersonオブジェクトを作成し、equals()メソッドを呼び出すとtrueが返されます。