Java 14 で Records クラスを使用して変更可能および不変のデータ オブジェクトを作成する方法

王林
リリース: 2023-08-01 08:13:49
オリジナル
874 人が閲覧しました

Records クラスを使用して Java 14 で可変および不変のデータ オブジェクトを作成する方法

はじめに:
Java 14 より前は、通常、クラスを使用してデータ オブジェクトを作成し、その中にフィールドを定義し、ゲッターを生成し、セッターメソッド。このようなコードは長くて扱いにくく、多くの定型コードが必要になります。 Java 14 では、データ オブジェクトを作成するためのよりクリーンな方法を提供する Records クラスが導入されました。 Records クラスは、フィールド、コンストラクター、ゲッター、equals、hashCode およびその他のメソッドを自動的に生成できます。この記事では、Java 14 の Records クラスを使用して変更可能および不変のデータ オブジェクトを作成する方法と、対応するコード例を紹介します。

可変データ オブジェクト:
Java では、キーワード「record」を使用して Record クラスを作成できます。このクラスはフィールドと多くのメソッドを自動的に生成します。 var キーワードを使用して、可変データ オブジェクトを定義および初期化できます。

次は、変更可能な Person オブジェクトを作成する方法を示す例です。

record Person(String name, int age) {}
ログイン後にコピー

この Person クラスには、name と age の 2 つのフィールドがあります。このクラスは、次のコードを使用して使用できます。

var person = new Person("John", 30);
person.setName("Mike");
person.setAge(35);
ログイン後にコピー

この例では、person という名前の可変オブジェクトを作成し、その名前と年齢のフィールドを設定します。生成された setName メソッドと setAge メソッドを使用して、このオブジェクトのフィールド値を変更することもできます。

不変データ オブジェクト:
不変データ オブジェクトを作成するには、Record クラスのフィールドを Final としてマークするだけです。このようにすると、これらのフィールドは変更できなくなります。次のコード例を使用できます。

record Person(String name, int age) {
    public Person {
        if(age < 0) {
            throw new IllegalArgumentException("Age cannot be negative");
        }
    }
}
ログイン後にコピー

この例では、コンストラクターを Person クラスに追加しました。コンストラクターを使用して、age フィールドの値を確認します。 age が 0 未満の場合、例外がスローされます。

この不変の person オブジェクトは、次のコードを使用して作成および使用できます:

var person = new Person("John", 30);
System.out.println(person.name());
System.out.println(person.age());
ログイン後にコピー

この例では、person という名前の不変オブジェクトを作成し、name および age メソッドを呼び出して渡して、フィールドの値。年齢フィールドは最終的なものであるため、変更できません。

概要:
この記事では、Java 14 の Records クラスを使用して変更可能および不変のデータ オブジェクトを作成する方法を紹介しました。変更可能および不変更の Person オブジェクトを作成する方法を、対応するコード例とともに示します。 Records クラスは、データ オブジェクトを作成する簡潔な方法を提供し、冗長で反復的なコードを削減します。これは、開発効率とコード品質を向上させることができる Java 14 の非常に便利な新機能です。 Records クラスを使用して独自のプロジェクトでデータ オブジェクトを作成し、その便利さを体験してみてください。

以上がJava 14 で Records クラスを使用して変更可能および不変のデータ オブジェクトを作成する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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