Java 13 の新しい Records クラスを使用してデータ オブジェクトをマーシャリングおよびアンマーシャリングする
Java は進化し続けるため、新しいバージョンごとにいくつかの新機能と改善点が導入されます。 Java 13 では、新しい Records クラスが導入されました。これにより、不変データ オブジェクトを宣言して使用するための簡潔な方法が提供されます。この記事では、Records クラスの使用法を紹介し、いくつかのサンプル コードを通じて Records クラスを使用してデータ オブジェクトをマーシャリングおよびアンマーシャリングする方法を示します。
まず、Records クラスの概念を理解しましょう。 Records クラスは、クラスとインターフェイスの両方である新しい型であり、不変データ オブジェクトを宣言するために使用されます。 Records クラスは、equals()、hashCode()、toString() などのメソッドを含むデフォルトの実装を提供します。さらに、Records クラスは、レコードを初期化するためのコンストラクターを自動的に作成します。通常のクラスとは異なり、Records クラスは拡張できず、独自のフィールドやメソッドを定義することもできません。
Records クラスの使用法を説明するために、簡単な例を示します。名前と年齢を含む Person オブジェクトがあるとします。
public record Person(String name, int age) {}
上記のコードは、Records クラスを使用して宣言された Person クラスを定義します。 Person クラスには、名前と年齢という 2 つのフィールドがあります。これで、人物オブジェクトを作成し、そのフィールドにアクセスできるようになりました。
Person person = new Person("Alice", 30); System.out.println(person.name()); // 输出:Alice System.out.println(person.age()); // 输出:30
上に示したように、アクセサ メソッド (name() および age()) を通じて Person オブジェクトのフィールド値を取得できます。さらに、Records クラスにはデフォルトの toString() メソッドも用意されており、これにより Person オブジェクトを直接出力できます。
次に、より複雑な例を見てみましょう。 Person オブジェクトを拡張し、school フィールドを追加する Student オブジェクトがあるとします。
public record Student(String name, int age, String school) implements Person {}
上記のコードは Student クラスを定義します。このクラスは person クラスを継承し、school フィールドを追加します。同時に、implements キーワードを使用して、Student クラスが Person インターフェイスの実装クラスであることを指定します。 Records クラスを使用して宣言されたオブジェクトは、通常のオブジェクトと同様にクラスの継承とインターフェイスの実装を行うことができます。
ここで、Records クラスを使用してデータ オブジェクトをマーシャリングおよびアンマーシャリングする方法を見てみましょう。 Person オブジェクトを JSON 文字列に変換し、ファイルに保存するとします。
import com.fasterxml.jackson.databind.ObjectMapper; public class PersonSerialization { public static void main(String[] args) throws Exception { Person person = new Person("Alice", 30); // 编组为JSON字符串 ObjectMapper mapper = new ObjectMapper(); String jsonString = mapper.writeValueAsString(person); // 保存为文件 FileWriter writer = new FileWriter("person.json"); writer.write(jsonString); writer.close(); System.out.println("Person对象已编组为JSON并保存到文件中"); } }
上記のコードは、Jackson ライブラリの ObjectMapper クラスを使用して、Person オブジェクトを JSON 文字列にマーシャリングし、ファイルに保存します。 mapper.writeValueAsString(person) メソッドを呼び出すことにより、Person オブジェクトを JSON 文字列に変換できます。次に、FileWriter クラスを使用して JSON 文字列をファイルに書き込みます。
アンマーシャリングのプロセスは、マーシャリングの逆です。ファイルから JSON 文字列を読み取り、それを person オブジェクトにアンマーシャリングするとします。
import com.fasterxml.jackson.databind.ObjectMapper; public class PersonDeserialization { public static void main(String[] args) throws Exception { // 从文件中读取JSON字符串 String jsonString = Files.readString(Path.of("person.json")); // 解组为Person对象 ObjectMapper mapper = new ObjectMapper(); Person person = mapper.readValue(jsonString, Person.class); System.out.println("JSON已解组为Person对象:" + person); } }
上記のコードは、Files クラスを使用してファイルから JSON 文字列を読み取り、ObjectMapper クラスを使用して JSON 文字列を Person オブジェクトにアンマーシャリングします。 mapper.readValue(jsonString, Person.class) メソッドを呼び出すことで、JSON 文字列を Person オブジェクトに変換できます。
要約すると、Java 13 の新しい Records クラスの使用法について学習し、サンプル コードを通じて Records クラスを使用してデータ オブジェクトをマーシャリングおよびアンマーシャリングする方法を示しました。 Records クラスは、不変データ オブジェクトを宣言して使用するための簡潔な方法を提供し、コードをより読みやすく信頼性の高いものにします。 Java 13 以降を使用している場合は、Records クラスを試してプロジェクトに適用してください。
以上がJava 13 の新しい Records クラスを使用してデータ オブジェクトをグループ化し、アンマーシャリングするの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。