ホームページ >Java >&#&チュートリアル >Javaで文字列フィールドと整数フィールドを持つオブジェクトのequals()メソッドを正しくオーバーライドする方法は?
Java での Equals メソッドのオーバーライド
Java では、equals メソッドは、オブジェクトが等しいかどうかを比較するための基本的なツールです。カスタム クラスで equals メソッドをオーバーライドする場合、そのクラスの 2 つのオブジェクトが同等であるかどうかを判断するための特定の基準を定義できます。
問題を理解する
次の点を考慮してください。名前と年齢のフィールドを持つ人物クラス。 2 つの Person オブジェクトが等しいかどうかを比較するには、equals メソッドをオーバーライドします。ただし、年齢フィールドが整数の場合、文字列を比較するように設計された平等メソッドを使用して比較しようとすると、エラーが発生する可能性があります。
解決策
この問題を解決するには、等価演算子 == を使用して整数を比較します。文字列と整数の両方の比較を処理する、オーバーライドされた平等メソッドの例を次に示します。
@Override public boolean equals(Object obj) { if (obj == null) { return false; } if (obj.getClass() != this.getClass()) { return false; } final Person other = (Person) obj; if ((this.name == null) ? (other.name != null) : !this.name.equals(other.name)) { return false; } if (this.age != other.age) { return false; } return true; }
この変更されたコードでは、
使用例
例を示します。オーバーライドされたequalsメソッドの使用方法:
public class Main { public static void main(String[] args) { List<Person> people = new ArrayList<>(); people.add(new Person("John Doe", 30)); people.add(new Person("Jane Doe", 25)); // Check for equality using the overridden equals method boolean equal = people.get(0).equals(people.get(1)); System.out.println(equal); // Output: false } }
この例では、 equals メソッドは、名前と年齢が異なる 2 つの Person オブジェクトが等しくないと正しく判断します。
以上がJavaで文字列フィールドと整数フィールドを持つオブジェクトのequals()メソッドを正しくオーバーライドする方法は?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。