Java 14 で Records クラスを使用して従来の DTO オブジェクトを置き換える方法
従来の Java 開発では、異なるレベル間でデータを転送するために、通常 DTO (Data Transfer Object) オブジェクトを使用します。 DTO オブジェクトは、データをカプセル化し、異なるコンポーネント間でデータを渡すために使用される単純な Java クラスです。ただし、多数の DTO クラスの作成と維持は、面倒で冗長になる可能性があります。 Java 14 では、データ カプセル化クラスを定義するためのより簡潔で直感的な方法を提供する Records クラスが導入されました。
Records クラスは、不変のデータ クラスを迅速に作成するのに役立ち、コンストラクター、ゲッター メソッド、equals、hashCode、toString およびその他のメソッドを自動的に生成します。 Records クラスを使用すると、コードを記述する際の作業負荷が大幅に軽減され、コードの可読性と保守性が向上します。
次に、Records クラスの使用例を示します。
public record Person(String name, int age) {} public class Main { public static void main(String[] args) { Person person = new Person("Alice", 25); System.out.println(person.name()); System.out.println(person.age()); System.out.println(person); } }
上の例では、キーワード Record を使用して宣言された Person クラスを定義します。名前と年齢という 2 つの属性も定義します。 Records クラスは、パラメーター名と年齢、および対応するゲッター メソッドを含むコンストラクターを自動的に生成します。
main メソッドでは、new キーワードを使用して Person オブジェクトを作成し、name() メソッドと age() メソッドを呼び出してオブジェクトの属性値を取得します。最後に、toString() メソッドを呼び出すことにより、Person オブジェクトを直接出力できます。
自動的に生成されたメソッドに加えて、Records クラスはいくつかの特別な関数も提供します。たとえば、Records クラスは各プロパティの最終修飾子を自動的に生成し、それを不変フィールドにします。これは、オブジェクトの作成後にそのプロパティ値を変更できないことを意味し、オブジェクトの不変性が保証されます。
もう 1 つの便利な機能は、Records クラスが、equals メソッドと hashCode メソッドを自動的に実装することです。これは、== 演算子を使用して、equals メソッドを手動で記述しなくても 2 つの Records オブジェクトを比較できることを意味します。
同時に、Records クラスは、元のオブジェクトと同じプロパティを持つが値が異なる新しいオブジェクトを作成するための非常に便利な copy メソッドも提供します。 copy メソッドを使用すると、コピー ロジックを手動で記述することなく、オブジェクトのプロパティ値を簡単に変更できます。
public record Person(String name, int age) {} public class Main { public static void main(String[] args) { Person person = new Person("Alice", 25); Person modifiedPerson = person.withAge(30); System.out.println(modifiedPerson); } }
上の例では、withAge メソッドを使用して、年齢属性が 30 に変更された新しい Person オブジェクトを作成します。関心のあるプロパティのみを変更する必要があり、他のプロパティの値に注意を払う必要はありません。
Records クラスは、パターン マッチングなどの他の機能と併用することもできます。パターン マッチングは、オブジェクトのさまざまな状態をより簡単に処理するのに役立つ Java 14 のもう 1 つの重要な機能です。
public record Person(String name, int age) {} public class Main { public static void main(String[] args) { Person person = new Person("Alice", 25); if (person instanceof Person p) { System.out.println(p.name()); System.out.println(p.age()); } } }
上の例では、パターン マッチングを使用して、Person オブジェクトのプロパティを変数 p にバインドし、それを if ステートメントに出力します。これにより、Records クラスをより直感的に使用して、オブジェクトのさまざまな状態を処理できるようになります。
要約すると、Java 14 の Records クラスは、データ カプセル化クラスを定義するためのより簡潔で直感的な方法を提供します。コンストラクター、ゲッターメソッド、equals などのメソッドを自動生成することで、コード作成の負担を大幅に軽減できます。同時に、Records クラスのいくつかの特別な関数と他の関数との組み合わせにより、データ オブジェクトをより効率的に処理できるようになります。このため、Records クラスは、Java 開発における従来の DTO オブジェクトを置き換えるのに適した選択肢となります。
以上が従来の DTO オブジェクトの代わりに Java 14 で Records クラスを使用する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。