ホームページ Java &#&チュートリアル Java 14のRecordsクラスを使用してequals()メソッドとhashCode()メソッドを自動的に生成する方法

Java 14のRecordsクラスを使用してequals()メソッドとhashCode()メソッドを自動的に生成する方法

Jul 31, 2023 pm 01:52 PM
php java カメラ equals() 画像認識 hashcode() 自動生成 レコードクラス

Java 14 で Records クラスを使用して、equals() メソッドと hashCode() メソッドを自動的に生成する方法

Java プログラミングでは、多くの場合、クラス用にquals() メソッドと hashCode() メソッドを作成する必要があります。これら 2 つのメソッドは、オブジェクトの等価性コードとハッシュ コードを扱う場合に非常に重要です。このプロセスを簡素化するために、Java 14 では新しい Records クラスが導入されています。 Records クラスは、equals() メソッドと hashCode() メソッドを記述する簡略化された方法を提供し、これら 2 つのメソッドの実装は、クラスのメンバー変数に基づいて自動的に生成できます。この記事では、Java 14 の Records クラスを使用して、equals() メソッドと hashCode() メソッドを自動的に生成する方法を紹介します。

まず、簡単な例を見てみましょう。 name と age という 2 つのメンバー変数を持つ Person という名前のクラスがあるとします。 2 つの Person オブジェクトが等しいかどうか、およびそれらを生成したハッシュ コードを比較できるようにしたいと考えています。

Java 14 より前は、以下に示すように、equals() メソッドと hashCode() メソッドを手動で記述する必要がありました。

public class Person {
    private String name;
    private int age;

    public Person(String name, int age) {
        this.name = name;
        this.age = age;
    }

    public String getName() {
        return name;
    }

    public int getAge() {
        return age;
    }

    @Override
    public boolean equals(Object obj) {
        if (this == obj) {
            return true;
        }
        if (obj == null || getClass() != obj.getClass()) {
            return false;
        }
        Person person = (Person) obj;
        return age == person.age && Objects.equals(name, person.name);
    }

    @Override
    public int hashCode() {
        return Objects.hash(name, age);
    }
}

上記のコードは、 person クラスのメソッドですが、メンバー変数が等しいかどうかを比較し、ハッシュ コードを生成するロジックを手動で作成する必要があります。

ここで、Records クラスを使用してこのプロセスを簡素化しましょう。 Records キーワードを直接使用してクラスを定義し、そのメンバー変数を指定できます。次に、Records クラスは、equals() メソッドと hashCode() メソッドの実装を自動的に生成します。この場合、次のコードを使用して Person クラスを定義できます。

public record Person(String name, int age) {}

はい、とても簡単です。たった 1 行のコードで Records クラスを定義し、equals() メソッドと hashCode() メソッドの実装を自動的に取得します。

さあ、検証してみましょう:

public class Main {
    public static void main(String[] args) {
        Person person1 = new Person("Alice", 25);
        Person person2 = new Person("Alice", 25);
        Person person3 = new Person("Bob", 30);
        
        System.out.println(person1.equals(person2)); // 输出:true
        System.out.println(person1.equals(person3)); // 输出:false
        
        System.out.println(person1.hashCode()); // 输出:2035395
        System.out.println(person2.hashCode()); // 输出:2035395
        System.out.println(person3.hashCode()); // 输出:66181377
    }
}

ご覧のとおり、Records クラスを使用すると、2 つの Person オブジェクトが等しいかどうかを簡単に比較し、ハッシュ コードを生成できます。 Person クラスの equals() メソッドは、2 つのメンバー変数 name と age の等しいかどうかを自動的に比較し、hashCode() メソッドは名前と年齢に基づいてハッシュ コードを自動的に生成します。

さらに、Records クラスは、オブジェクトをインスタンス化し、メンバー変数を通じてその値にアクセスするために使用できるコンストラクターも提供します。たとえば、person.name と person.age を通じて Person オブジェクトの名前と年齢にアクセスできます。

要約すると、Java 14 の Records クラスを使用して、equals() メソッドと hashCode() メソッドを自動的に生成するのは、非常に簡単で便利な方法です。 1 行のコードで Records クラスを定義するだけで、オブジェクトが等しいかどうかを簡単に比較し、ハッシュ コードを生成できます。この自動生成メソッドにより、コードの記述が大幅に簡素化され、開発効率が向上します。このため、Records クラスは Java 14 で非常に便利な機能になりました。

以上がJava 14のRecordsクラスを使用してequals()メソッドとhashCode()メソッドを自動的に生成する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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

ホットAIツール

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Undresser.AI Undress

Undresser.AI Undress

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

AI Clothes Remover

AI Clothes Remover

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

Clothoff.io

Clothoff.io

AI衣類リムーバー

Video Face Swap

Video Face Swap

完全無料の AI 顔交換ツールを使用して、あらゆるビデオの顔を簡単に交換できます。

ホットツール

メモ帳++7.3.1

メモ帳++7.3.1

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

SublimeText3 中国語版

SublimeText3 中国語版

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

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

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

ホットトピック

phpmyAdminセキュリティベストプラクティス phpmyAdminセキュリティベストプラクティス Aug 17, 2025 am 01:56 AM

phpMyAdminを効果的に保護するには、複数のセキュリティ対策を採用する必要があります。 1. IPを介してアクセスを制限すると、信頼できるIP接続のみが許可されます。 2.デフォルトのURLパスを推測が容易ではない名前に変更します。 3.強力なパスワードを使用して、最小限の権限を備えた専用のMySQLユーザーを作成すると、2要素認証を有効にすることをお勧めします。 4.既知の脆弱性を修正するには、phpmyAdminバージョンを維持します。 5. WebサーバーとPHP構成を強化し、危険な機能を無効にし、ファイルの実行を制限します。 6。信任状の漏れを防ぐために、HTTPSに通信を暗号化するように強制します。 7. HTTP基本認証を使用していない場合、または使用していない場合はPHPMyAdminを無効にします。 8.ログを定期的に監視し、fail2banを構成して、ブルートフォースの亀裂から防御します。 9。セットアップを削除します

現在、NVIDIA GPUに接続されたディスプレイを使用していません[修正] 現在、NVIDIA GPUに接続されたディスプレイを使用していません[修正] Aug 19, 2025 am 12:12 AM

ifyousee "youarenotusing adisplayatchedtoannvidiagpu、" surseyourmonitoristuntedtothenvidiagpuport、configuredisissettingsintingsintingsintinginstingsintingduandcleaninstall、およびsettheprimarysodiscutodiscreteinbios/ueftereed

XSLTパラメーターを使用して、動的変換を作成します XSLTパラメーターを使用して、動的変換を作成します Aug 17, 2025 am 09:16 AM

XSLTパラメーターは、外部の通過値を介した動的変換の重要なメカニズムです。 1.宣言されたパラメーターを使用し、デフォルト値を設定します。 2。XSLTarGumentListなどのインターフェイスにアプリケーションコード(C#など)から実際の値を渡します。 3.テンプレート内の$ paramName参照パラメーターを介して、条件付き処理、ローカリゼーション、データフィルタリング、または出力形式を制御します。 4.ベストプラクティスには、意味のある名前の使用、デフォルト値の提供、関連するパラメーターのグループ化、および値の検証が含まれます。パラメーターを合理的に使用すると、XSLTスタイルのシートが非常に再利用可能で保守可能になり、同じスタイルシートが異なる入力に基づいて多様な出力結果を生成できます。

オペレーティングシステムが見つからない[修正] オペレーティングシステムが見つからない[修正] Aug 17, 2025 am 09:10 AM

ifyourcomputershows "operatingSystemNotFound、" TrythesESteps:1。checkbios/uefibootorder.2.verifydiskconnections.3.ReasSignDriveLetterViadiskManagement.5.ReinstalltallTallTallTallTallTallTallTallTallTallTallTallTallTallTallTallTallTallTallTalltall

Javaでオプションの使用方法は? Javaでオプションの使用方法は? Aug 22, 2025 am 10:27 AM

useoptional.empty()、optional.of()、andoptional.ofnullable()tocleateoptionalinstancesは、null、ornull、orpossivally null.2.ceeckforvaluessafelyusingispresent()orpreferablesifppresent()directnullted()aboiddirectnullted()aboiddirestinect()ofoiddirestinect()ofoiddirefrestnullterisent()

一般的なJavaデザインパターンを例で探索します 一般的なJavaデザインパターンを例で探索します Aug 17, 2025 am 11:54 AM

Java設計パターンは、一般的なソフトウェア設計の問題に対する再利用可能なソリューションです。 1. Singletonモードは、データベース接続のプーリングまたは構成管理に適したクラスのインスタンスが1つしかないことを保証します。 2。工場モードはオブジェクトの作成を分離し、支払い方法などのオブジェクトは工場のクラスを通じて生成されます。 3.オブザーバーモードは、天気の更新などのイベント駆動型システムに適した、自動的に依存オブジェクトを通知します。 4.ソート戦略などの戦略モードの動的スイッチングアルゴリズムにより、コードの柔軟性が向上します。これらのパターンは、コードの保守性とスケーラビリティを改善しますが、過剰使用を避ける必要があります。

PSオイルペイントフィルターグレーアウト修正 PSオイルペイントフィルターグレーアウト修正 Aug 18, 2025 am 01:25 AM

The oilpaintfilterinphotoshopisgreedouturedutivesuredivedocumentmodeorlayertype

Javaのデッドロックとは何ですか?どうすればそれを防ぐことができますか? Javaのデッドロックとは何ですか?どうすればそれを防ぐことができますか? Aug 23, 2025 pm 12:55 PM

adeadlockinjavaoccurswhentwoorthoreThreadsareblockededforever、それぞれの方向に、通常はdueTococularwaitcausedistentlockdoringを使用します

See all articles