ホームページ Java &#&チュートリアル Java でオブジェクトが等しいかどうかを正しく比較する方法:equals(Object) メソッドのオーバーライドとオーバーライド

Java でオブジェクトが等しいかどうかを正しく比較する方法:equals(Object) メソッドのオーバーライドとオーバーライド

Jan 11, 2024 pm 05:18 PM
リライト equals 平等

Java でオブジェクトが等しいかどうかを正しく比較する方法:equals(Object) メソッドのオーバーライドとオーバーライド

Java の equals(Object) メソッドは、2 つのオブジェクトの同等性を比較するために使用されるメソッドです。 Javaクラスでは、デフォルトでequalsメソッドがObjectクラスから継承され、単純に2つのオブジェクトの参照値を比較します。ただし、多くの場合、カスタムの方法でオブジェクトが等しいかどうかを比較する必要があり、そのためにはサブクラスで equals メソッドをオーバーライドする必要があります。

オブジェクトが等しいかどうかを正しく比較するには、いくつかのルールに従う必要があります。まず、equals メソッドは再帰性を満たす必要があります。これは、オブジェクトがそれ自体と等しい必要があることを意味します。次に、equals メソッドは対称性を満たす必要があります。つまり、オブジェクト A がオブジェクト B と等しい場合、オブジェクト B とオブジェクト A も等しくなければなりません。最後に、equals メソッドは推移性を満たす必要があります。つまり、オブジェクト A がオブジェクト B に等しく、オブジェクト B がオブジェクト C に等しい場合、オブジェクト A とオブジェクト C も等しくなければなりません。

equals メソッドをオーバーライドしてオーバーライドするには、次の重要な点を考慮する必要があります。

まず、equals メソッドのシグネチャが Object クラスの equals メソッドと一致していることを確認する必要があります。 equals メソッドのシグネチャは public booleanquals(Object obj) である必要があります。これは、Object 型のパラメータを受け入れ、ブール値を返す必要があることを意味します。

2 番目に、型チェックを実行して、受信パラメータが現在のオブジェクト型と一致するオブジェクトであることを確認する必要があります。これは、instanceof キーワードを使用して実現できます。型チェックが失敗した場合は、直接 false を返すことができます。

次に、受信パラメータを現在のオブジェクトの型に変換し、各属性の同等性を比較する必要があります。このプロセスでは、Java の equals メソッドの実装規則に従う必要があります。つまり、「==」演算子を使用する代わりに、equals メソッドを使用してオブジェクトのプロパティを比較します。

属性値を比較するときは、null 参照の状況を考慮する必要があります。プロパティ値が null の場合、比較に Objects クラスの equals メソッドを使用できます。これにより、null 参照の状況が正しく処理されます。さらに、基本的なタイプの属性の場合、比較に「==」演算子を直接使用できます。

最後に、equals メソッドが hashCode メソッドをオーバーライドするようにする必要があります。 Java 仕様によれば、2 つのオブジェクトが等しい場合、それらの hashCode メソッドは同じ値を返さなければなりません。これは、ハッシュ テーブルなどのデータ構造を使用するときに、オブジェクトが正しく格納および取得されることを保証するためです。

以下は、equals メソッドをオーバーライドする方法を示す例です:

public class Person {
    private String name;
    private int age;
  
    // 省略构造方法、getter和setter方法
  
    @Override
    public boolean equals(Object obj) {
        if (this == obj) {
            return true;
        }
        if (!(obj instanceof Person)) {
            return false;
        }
        Person other = (Person) obj;
        return Objects.equals(this.name, other.name) && this.age == other.age;
    }
  
    @Override
    public int hashCode() {
        return Objects.hash(name, age);
    }
  
    // 省略其他方法
}
ログイン後にコピー

上の例では、equals メソッドをオーバーライドして、人物の名前と年齢のプロパティの同等性を比較します。オブジェクトセックス。同時に、等しいオブジェクトが同じハッシュ コードを持つようにするために、hashCode メソッドもオーバーライドしました。

要約すると、equals メソッドを正しく書き換えてオーバーライドすることで、オブジェクトが等しいかどうかを比較するときに正しい結果が得られるようになります。なお、equalsメソッドの書き換えには再帰性、対称性、推移性などの性質を満たす必要があり、hashCodeメソッドも書き換える必要がある。これらのルールに従うことで、オブジェクトの等価比較を使用するときに正しい結果が得られることを保証できます。

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

このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover

AI Clothes Remover

写真から衣服を削除するオンライン AI ツール。

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

AI Hentai Generator

AI Hentai Generator

AIヘンタイを無料で生成します。

ホットツール

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

SublimeText3 中国語版

SublimeText3 中国語版

中国語版、とても使いやすい

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

神レベルのコード編集ソフト(SublimeText3)

PHP の等号 (==2 つの等号) と恒等 (=== 3 つの等号) 比較演算子の違いは何ですか? PHP の等号 (==2 つの等号) と恒等 (=== 3 つの等号) 比較演算子の違いは何ですか? Sep 07, 2023 pm 05:45 PM

PHP では、二重等号 (==) と三重等号 (===) は、値が等しいかどうかを比較するために使用される比較演算子です。ただし、動作と比較プロセスの厳密さは異なります。二重等号 (==) 二重等号演算子は 2 つの値が等しいかどうかをチェックしますが、2 つの値のデータ型が異なる場合は型強制を実行します。これは、PHP が比較を実行する前に値をジェネリック型に変換しようとすることを意味します。二重等価演算子に関する重要なポイントは次のとおりです。 2 つの値が同じ型である場合、三重等価演算子 (厳密な比較) と同様に動作します。 2 つの値の型が異なる場合、PHP はそれらを共通の型に変換しようとします。たとえば、整数と文字列を比較すると、PHP は文字列を変換しようとします。

golangで関数を書き直すにはどうすればよいですか? golangで関数を書き直すにはどうすればよいですか? Apr 27, 2024 am 11:15 AM

Go では、メソッドのオーバーライドにより、同じメソッド シグネチャを維持しながら、基本クラスのメソッドを派生クラスで再定義できます。override キーワードを使用します。オーバーライドされたメソッドは、基本メソッドと同じシグネチャを持つ必要があります。オーバーライドされたメソッドのレシーバー型は、基本型のサブタイプである必要があります。

Javaでequalsメソッドを正しくオーバーライドする方法 Javaでequalsメソッドを正しくオーバーライドする方法 May 09, 2023 am 11:19 AM

1. イコール法とは何ですか?まず、Object クラスが Java のすべてのクラスの親クラス (スーパークラス/基本クラス) であることを知る必要があります。つまり、Java では、すべてのクラスはデフォルトで Object クラスを継承します。 Object クラスに実装されているため、すべてのメソッドを直接使用できます。 equals メソッドは、Object クラスによって実装される多数のメソッドの 1 つです。次のスクリーンショットは、Java11 APIObject クラスのすべてのメソッドからのものです: 1.1equals メソッド:equals: は、参照型を決定することのみができる Object クラスのメソッドです。アドレスがアドレスであるかどうかは、JDK ソース コードによって決定されることを後で示します。デフォルトでは等しい (基になる参照型変数の本質は保存することであるため)

Nginx がリクエスト URL に基づいてリクエスト リライト構成を実装する方法 Nginx がリクエスト URL に基づいてリクエスト リライト構成を実装する方法 Nov 08, 2023 pm 04:15 PM

Nginx は軽量で高性能な Web サーバーであり、リバース プロキシやロード バランシングなどの高度な機能をサポートするだけでなく、強力なリクエスト書き換え機能も備えています。実際の Web アプリケーションでは、多くの場合、より良いユーザー エクスペリエンスと検索エンジンの最適化効果を実現するために、リクエスト URL を書き換える必要があります。この記事では、Nginx がリクエスト URL に基づいてリクエスト書き換え設定を実装する方法を、具体的なコード例も含めて紹介します。書き換え構文 Nginx では、rewrite ディレクティブを使用してリクエストの書き換えを実行できます。その基本的な言語

Nginx は Web サイトの構造と SEO を最適化するために URL 構成プラクティスを書き換えます Nginx は Web サイトの構造と SEO を最適化するために URL 構成プラクティスを書き換えます Jul 04, 2023 pm 04:30 PM

Nginx による URL 構成の書き換え、Web サイト構造と SEO の最適化の実践 はじめに: 現代のインターネット時代では、従来の静的な Web ページではユーザーのニーズを満たすことができなくなりました。より良いユーザー エクスペリエンスを提供するために、多くの Web サイトは動的 Web テクノロジーを使用し始めています。ただし、動的 ​​Web ページの URL は十分に使いやすいものではないことが多く、検索エンジンに含めたりユーザーに共有したりするのに一定の困難があります。この記事では、NginxのURL書き換え機能を使ってWebサイトの構造やSEOを最適化する方法を紹介します。 1. NginxのURL書き換え機能Nginx

Javaでの==とequalsの使用の違いは何ですか Javaでの==とequalsの使用の違いは何ですか May 15, 2023 am 09:25 AM

1. == 解析 == は、同じ基本データ型間の比較によく使用されますが、同じ型のオブジェクト間の比較にも使用できます。== が基本データ型を比較す​​る場合、2 つの基本データ型を比較します。値は等しい; == が比較される 2 つのオブジェクトである場合、比較されるのは 2 つのオブジェクトの参照であり、2 つのオブジェクトの参照が等しいかどうかを比較することになります。 2 つのオブジェクトが同じメモリ領域を指しているかどうかを判断する; 2. Equals メソッドの分析 Equals メソッドは、主に 2 つのオブジェクト間で、一方のオブジェクトがもう一方のオブジェクトと等しいかどうかを検出するために使用されます。オブジェクト クラス publicbooleanequals(Objectobj){ の平等メソッドのソース コードを見てみましょう。

nosqlとmysqlの違いは何ですか nosqlとmysqlの違いは何ですか Jan 28, 2023 pm 04:51 PM

違い: 1. MySQL はリレーショナル データベースですが、NoSQL は非リレーショナル データベースです。 2. MySQL の厳格なモード制限は拡張が容易ではありませんが、NoSQL は拡張が容易です。 3. MySQL では、データベースを作成する前に詳細なデータベース モデルが必要ですが、NoSQL では必要ありません。 4. MySQL は多数のレポート ツールを提供しますが、nosql は提供しません。 5. MySQL と比較して、NoSQL はより柔軟な設計を提供します。 6. MySQL で使用される標準言語は SQL ですが、NoSQL には標準クエリ言語がありません。

Java でオブジェクトが等しいかどうかを正しく比較する方法:equals(Object) メソッドのオーバーライドとオーバーライド Java でオブジェクトが等しいかどうかを正しく比較する方法:equals(Object) メソッドのオーバーライドとオーバーライド Jan 11, 2024 pm 05:18 PM

Java の equals(Object) メソッドは、2 つのオブジェクトが等しいかどうかを比較するために使用されるメソッドです。 Javaクラスでは、デフォルトでequalsメソッドがObjectクラスから継承され、単純に2つのオブジェクトの参照値を比較します。ただし、多くの場合、カスタムの方法でオブジェクトが等しいかどうかを比較する必要があり、そのためにはサブクラスで equals メソッドをオーバーライドする必要があります。オブジェクトが等しいかどうかを正しく比較するには、いくつかのルールに従う必要があります。まず第一に、equals メソッドは再帰性を満たす必要があります。つまり、

See all articles