ホームページ >Java >&#&チュートリアル >正確なオブジェクト比較のためにJavaでequals()メソッドをオーバーライドする方法は?
オブジェクト比較のための Java でのquals() メソッドのオーバーライド
Java では、equals() メソッドを使用して 2 つのオブジェクトかどうかを判断できます。等しいです。デフォルトでは、equals() はオブジェクト参照を比較しますが、これは必ずしも望ましい動作ではありません。 equals() メソッドをオーバーライドすると、独自の比較ロジックを定義できます。
シナリオ:
次のような People クラスの equals() メソッドをオーバーライドしたいとします。 2 つのデータ フィールド: 名前と年齢。名前と年齢に基づいて人々のオブジェクトを比較することを目的としています。
カスタム equals() メソッド:
equals() メソッドをオーバーライドするには、このメソッドをPeople クラス:
public boolean equals(People other) { // Null check and class check if (other == null || getClass() != other.getClass()) { return false; } // Downcast to People People otherPeople = (People) other; // Compare fields using == for primitive types (age) and equals() for objects (name) return name.equals(otherPeople.name) && age == otherPeople.age; }
プリミティブ型の修正比較:
元のコードは、equals() を使用して、プリミティブ型である age フィールドを比較しようとしました。プリミティブ型には独自の等価比較演算子 (この場合は ==) があります。 age.equals(other.age) を age == other.age に変更すると、この問題が解決されます。
使用例:
Main クラス内で、人の ArrayListオブジェクトが作成されます。人々を比較し、結果を出力するために、equals() メソッドが使用されます:
ArrayList<Person> people = new ArrayList<>(); people.add(new Person("Subash Adhikari", 28)); // ... // Compare people objects for (int i = 0; i < people.size() - 1; i++) { for (int y = i + 1; y <= people.size() - 1; y++) { boolean check = people.get(i).equals(people.get(y)); // Print comparison result System.out.println("-- " + people.get(i).getName() + " - VS - " + people.get(y).getName()); System.out.println(check); } }
出力:
プログラムは、比較された人々が等しいかどうかを出力します。 。例:
-- Subash Adhikari - VS - K false -- Subash Adhikari - VS - StackOverflow false -- Subash Adhikari - VS - Subash Adhikari true
以上が正確なオブジェクト比較のためにJavaでequals()メソッドをオーバーライドする方法は?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。