Rumah >Java >javaTutorial >Kumpulan dan unmarshal data objek menggunakan kelas Rekod baharu dalam Java 13

Kumpulan dan unmarshal data objek menggunakan kelas Rekod baharu dalam Java 13

WBOY
WBOYasal
2023-07-31 23:33:28753semak imbas

Gunakan kelas Rekod baharu dalam Java 13 untuk memariskan dan menyahmarshal objek data

Memandangkan Java terus berkembang, setiap versi baharu memperkenalkan beberapa ciri dan peningkatan baharu. Di Java 13, kelas Rekod baharu telah diperkenalkan, yang memberikan kami cara ringkas untuk mengisytiharkan dan menggunakan objek data tidak boleh diubah. Dalam artikel ini, kami akan memperkenalkan penggunaan kelas Rekod dan menunjukkan melalui beberapa kod contoh cara menggunakan kelas Rekod kepada objek data marshal dan unmarshal.

Pertama, mari kita fahami konsep kelas Rekod. Kelas Rekod ialah jenis baharu yang merupakan kedua-dua kelas dan antara muka dan digunakan untuk mengisytiharkan objek data tidak boleh diubah. Kelas Rekod menyediakan pelaksanaan lalai, termasuk kaedah seperti equals(), hashCode(), dan toString(). Di samping itu, kelas Rekod secara automatik mencipta pembina untuk memulakan rekod. Tidak seperti kelas biasa, kelas Rekod tidak boleh dilanjutkan dan tidak dibenarkan untuk menentukan medan dan kaedahnya sendiri.

Mari kita berikan contoh mudah untuk menggambarkan penggunaan kelas Rekod. Katakan kita mempunyai objek Orang yang mengandungi nama dan umur.

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

Kod di atas mentakrifkan kelas Orang, yang diisytiharkan menggunakan kelas Rekod. Kelas Orang mempunyai dua medan: nama dan umur. Sekarang kita boleh mencipta objek Orang dan mengakses medannya.

Person person = new Person("Alice", 30);
System.out.println(person.name()); // 输出:Alice
System.out.println(person.age()); // 输出:30

Seperti yang ditunjukkan di atas, kita boleh mendapatkan nilai medan objek Orang melalui kaedah pengakses (nama() dan umur()). Selain itu, kelas Rekod juga menyediakan kaedah lalai toString() supaya kita boleh mencetak objek Orang secara langsung.

Seterusnya, mari kita lihat contoh yang lebih kompleks. Katakan kita mempunyai objek Pelajar yang memanjangkan objek Orang dan menambah medan sekolah.

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

Kod di atas mentakrifkan kelas Pelajar, yang mewarisi daripada kelas Orang dan menambah medan sekolah. Pada masa yang sama, kami menggunakan kata kunci implements untuk menentukan bahawa kelas Pelajar ialah kelas pelaksanaan antara muka Orang. Objek yang diisytiharkan menggunakan kelas Rekod boleh menjalani pewarisan kelas dan pelaksanaan antara muka sama seperti objek biasa.

Sekarang, mari lihat cara mengawal dan menyahmarshal objek data menggunakan kelas Rekod. Katakan kita mahu menukar objek Orang kepada rentetan JSON dan menyimpannya ke fail.

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并保存到文件中");
    }
}

Kod di atas menggunakan kelas ObjectMapper dalam perpustakaan Jackson untuk mengawal objek Person ke dalam rentetan JSON dan menyimpannya ke fail. Dengan memanggil kaedah mapper.writeValueAsString(person), kita boleh menukar objek Person menjadi rentetan JSON. Kami kemudian menggunakan kelas FileWriter untuk menulis rentetan JSON ke fail.

Proses ungrouping adalah bertentangan dengan grouping. Katakan kita membaca rentetan JSON daripada fail dan membongkarnya menjadi objek Orang.

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);
    }
}

Kod di atas menggunakan kelas Fail untuk membaca rentetan JSON daripada fail dan menggunakan kelas ObjectMapper untuk menyahmarshal rentetan JSON menjadi objek Person. Dengan memanggil kaedah mapper.readValue(jsonString, Person.class), kita boleh menukar rentetan JSON kepada objek Person.

Ringkasnya, kami telah mempelajari tentang penggunaan kelas Records baharu dalam Java 13, dan menunjukkan melalui kod sampel cara menggunakan kelas Records untuk mengawal dan menyahmarshal objek data. Kelas Rekod memberikan kami cara ringkas untuk mengisytiharkan dan menggunakan objek data tidak boleh diubah, menjadikan kod lebih mudah dibaca dan boleh dipercayai. Jika anda menggunakan Java 13 atau lebih tinggi, cuba kelas Rekod dan gunakannya pada projek anda.

Atas ialah kandungan terperinci Kumpulan dan unmarshal data objek menggunakan kelas Rekod baharu dalam Java 13. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn

Artikel berkaitan

Lihat lagi