ホームページ > Java > &#&チュートリアル > Java でオブジェクト比較の「equals」メソッドを正しくオーバーライドするにはどうすればよいですか?

Java でオブジェクト比較の「equals」メソッドを正しくオーバーライドするにはどうすればよいですか?

Linda Hamilton
リリース: 2024-12-22 18:32:09
オリジナル
801 人が閲覧しました

How Do I Correctly Override the `equals` Method for Object Comparison in Java?

Java におけるオブジェクトの同等性を理解する

Java で 2 つのオブジェクトの同等性を比較するには、多くの場合、equals メソッドが使用されます。説明したシナリオの目的は、People オブジェクト間の比較を容易にするために、名前フィールドと年齢フィールドを持つ People クラスの平等メソッドをオーバーライドすることです。

提示された最初の実装では、年齢フィールドに平等メソッドを使用していました。整数型です。ただし、指摘したように、equals メソッドは String オブジェクトを比較するように特別に設計されています。

解決策: 整数フィールドの比較

整数フィールドを比較するには、以下を使用することをお勧めします。メソッドの代わりに == 演算子を使用します。 == 演算子は、equals メソッドを呼び出すのではなく、プリミティブ データ型の値を直接比較します。

Equals を正しく実装する

Equals メソッドの正しい実装People クラスは次のようになります:

@Override
public boolean equals(Object obj) {
    if (obj == null) {
        return false;
    }

    if (obj.getClass() != this.getClass()) {
        return false;
    }

    final People other = (People) obj;
    if ((this.name == null) ? (other.name != null) : !this.name.equals(other.name)) {
        return false;
    }

    if (this.age != other.age) {
        return false;
    }

    return true;
}
ログイン後にコピー

この中で実装:

  • 最初に、渡されたオブジェクトが null であるか、異なるクラスであるか、または null の名前フィールドがあるかどうかをチェックします。
  • これらのチェックに合格した場合、== 演算子を使用して比較します。年齢フィールド。
  • すべての比較が true と評価された場合は true を返し、それ以外の場合は false を返します。

以上がJava でオブジェクト比較の「equals」メソッドを正しくオーバーライドするにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート