cari
RumahJavajavaTutorialBagaimana untuk mencapai kegigihan objek menggunakan serialisasi dan deserialisasi di Jawa?

Bagaimana untuk mencapai ketekunan objek menggunakan pensirilan dan penyahserikatan dalam Java?

Pengenalan:
Dalam pembangunan Java, ketekunan objek ialah cara penting untuk mencapai penyimpanan data jangka panjang. Pensirian dan penyahserikatan adalah salah satu cara yang biasa digunakan untuk mencapai kegigihan objek di Jawa. Artikel ini akan memperkenalkan konsep bersiri dan penyahserikatan dan cara menggunakan pensirilan dan penyahserikatan dalam Java untuk mencapai kegigihan objek.

1. Apakah pesirilan dan penyahserilan?
Siri ialah proses menukar objek kepada aliran bait supaya objek boleh disalin dan dihantar semasa operasi seperti penghantaran rangkaian atau menyimpan ke cakera. Deserialisasi ialah proses menukar semula aliran bait kepada objek dan memulihkan keadaan dan data objek. Di Java, pensirilan objek dan penyahserikatan dicapai dengan melaksanakan antara muka Boleh Bersiri.

2. Cara melaksanakan siri
Java menyediakan dua kaedah siri utama, iaitu siri berasaskan aliran bait dan siri berasaskan aliran aksara.

1. Pensirian berdasarkan aliran bait
Pensirian berdasarkan aliran bait boleh dilaksanakan melalui kelas ObjectOutputStream dan ObjectInputStream. Berikut ialah kod sampel yang menunjukkan cara mensiri dan menyahsiri objek menggunakan pendekatan berasaskan aliran bait.

import java.io.*;

public class ByteStreamSerializationDemo {
    public static void main(String[] args) {
        // 将对象序列化为字节流
        try {
            // 创建一个待序列化的对象
            Person person = new Person("Tom", 30);
            
            // 创建一个输出流
            FileOutputStream fileOutputStream = new FileOutputStream("person.obj");
            ObjectOutputStream objectOutputStream = new ObjectOutputStream(fileOutputStream);
            
            // 将对象写入输出流
            objectOutputStream.writeObject(person);
            
            // 关闭输出流
            objectOutputStream.close();
        } catch (IOException e) {
            e.printStackTrace();
        }
        
        // 将字节流反序列化为对象
        try {
            // 创建一个输入流
            FileInputStream fileInputStream = new FileInputStream("person.obj");
            ObjectInputStream objectInputStream = new ObjectInputStream(fileInputStream);
            
            // 读取对象数据
            Person person = (Person) objectInputStream.readObject();
            
            // 打印对象数据
            System.out.println(person.getName());   // 输出:Tom
            System.out.println(person.getAge());    // 输出:30
            
            // 关闭输入流
            objectInputStream.close();
        } catch (IOException | ClassNotFoundException e) {
            e.printStackTrace();
        }
    }
}

class Person implements Serializable {
    private String name;
    private int age;
    
    // 构造方法、getter和setter省略
    
    public Person(String name, int age) {
        this.name = name;
        this.age = age;
    }
}

Dalam kod di atas, kami mula-mula mencipta objek Orang untuk disiri, dan kemudian mensirikan objek itu ke dalam aliran bait melalui kelas FileOutputStream dan ObjectOutputStream dan menulisnya pada fail. Seterusnya, kami menyahsiri aliran bait dalam fail menjadi objek melalui kelas FileInputStream dan ObjectInputStream, dan akhirnya mencetak nilai atribut objek.

2. Pensirian berdasarkan aliran aksara
Pensiran berdasarkan aliran aksara boleh dilaksanakan melalui kelas ObjectWriter dan ObjectReader.

import java.io.*;

public class CharacterStreamSerializationDemo {
    public static void main(String[] args) {
        // 将对象序列化为字符流
        try {
            // 创建一个待序列化的对象
            Person person = new Person("Tom", 30);
            
            // 创建一个Writer
            FileWriter fileWriter = new FileWriter("person.txt");
            BufferedWriter bufferedWriter = new BufferedWriter(fileWriter);
            ObjectWriter objectWriter = new ObjectWriter(bufferedWriter);
            
            // 将对象写入字符流
            objectWriter.writeObject(person);
            
            // 关闭字符流
            objectWriter.close();
        } catch (IOException e) {
            e.printStackTrace();
        }
        
        // 将字符流反序列化为对象
        try {
            // 创建一个Reader
            FileReader fileReader = new FileReader("person.txt");
            BufferedReader bufferedReader = new BufferedReader(fileReader);
            ObjectReader objectReader = new ObjectReader(bufferedReader);
            
            // 读取对象数据
            Person person = (Person) objectReader.readObject();
            
            // 打印对象数据
            System.out.println(person.getName());   // 输出:Tom
            System.out.println(person.getAge());    // 输出:30
            
            // 关闭字符流
            objectReader.close();
        } catch (IOException | ClassNotFoundException e) {
            e.printStackTrace();
        }
    }
}

class Person implements Serializable {
    private String name;
    private int age;
    
    // 构造方法、getter和setter省略
    
    public Person(String name, int age) {
        this.name = name;
        this.age = age;
    }
}

Dalam kod di atas, kami menyerikan objek ke dalam aliran aksara melalui kelas FileWriter, BufferedWriter dan ObjectWriter dan menulisnya pada fail. Kemudian, aliran aksara dalam fail dinyahsiri menjadi objek melalui kelas FileReader, BufferedReader dan ObjectReader, dan akhirnya nilai atribut objek boleh dicetak.

3. Nota
Apabila menggunakan pensirilan dan penyahserilan dalam Java untuk mencapai ketekunan objek, anda perlu memberi perhatian kepada perkara berikut:

1 Kelas objek mesti melaksanakan antara muka Bersiri, jika tidak, pensirilan dan penyahserilan tidak boleh dilakukan .
2. Semua objek yang dirujuk dalam kelas bersiri juga mesti boleh bersiri.
3 Medan kelas bersiri dan desiri boleh terdiri daripada sebarang jenis, termasuk kelas tersuai, jenis data asas, jenis pengumpulan, dsb.
4. Medan kelas bersiri dan desiri boleh diubah suai sementara, dan ia tidak akan berterusan.

Kesimpulan:
Melalui pengenalan artikel ini, kami mempelajari apa itu serialisasi dan deserialisasi, dan menunjukkan melalui contoh kod cara menggunakan serialisasi dan deserialisasi dalam Java untuk mencapai kegigihan objek. Dalam pembangunan sebenar, penyimpanan jangka panjang dan penghantaran objek boleh dicapai dengan memilih kaedah bersiri yang sesuai mengikut keperluan dan mengikut spesifikasi dan langkah berjaga-jaga bersiri.

Atas ialah kandungan terperinci Bagaimana untuk mencapai kegigihan objek menggunakan serialisasi dan deserialisasi di Jawa?. 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
Bagaimanakah saya menggunakan Maven atau Gradle untuk Pengurusan Projek Java Lanjutan, Membina Automasi, dan Resolusi Ketergantungan?Bagaimanakah saya menggunakan Maven atau Gradle untuk Pengurusan Projek Java Lanjutan, Membina Automasi, dan Resolusi Ketergantungan?Mar 17, 2025 pm 05:46 PM

Artikel ini membincangkan menggunakan Maven dan Gradle untuk Pengurusan Projek Java, membina automasi, dan resolusi pergantungan, membandingkan pendekatan dan strategi pengoptimuman mereka.

Bagaimanakah saya membuat dan menggunakan perpustakaan Java Custom (fail JAR) dengan pengurusan versi dan pergantungan yang betul?Bagaimanakah saya membuat dan menggunakan perpustakaan Java Custom (fail JAR) dengan pengurusan versi dan pergantungan yang betul?Mar 17, 2025 pm 05:45 PM

Artikel ini membincangkan membuat dan menggunakan perpustakaan Java tersuai (fail balang) dengan pengurusan versi dan pergantungan yang betul, menggunakan alat seperti Maven dan Gradle.

Bagaimanakah saya melaksanakan caching pelbagai peringkat dalam aplikasi java menggunakan perpustakaan seperti kafein atau cache jambu?Bagaimanakah saya melaksanakan caching pelbagai peringkat dalam aplikasi java menggunakan perpustakaan seperti kafein atau cache jambu?Mar 17, 2025 pm 05:44 PM

Artikel ini membincangkan pelaksanaan caching pelbagai peringkat di Java menggunakan kafein dan cache jambu untuk meningkatkan prestasi aplikasi. Ia meliputi persediaan, integrasi, dan faedah prestasi, bersama -sama dengan Pengurusan Dasar Konfigurasi dan Pengusiran PRA Terbaik

Bagaimanakah saya boleh menggunakan JPA (Java Constence API) untuk pemetaan objek-objek dengan ciri-ciri canggih seperti caching dan malas malas?Bagaimanakah saya boleh menggunakan JPA (Java Constence API) untuk pemetaan objek-objek dengan ciri-ciri canggih seperti caching dan malas malas?Mar 17, 2025 pm 05:43 PM

Artikel ini membincangkan menggunakan JPA untuk pemetaan objek-relasi dengan ciri-ciri canggih seperti caching dan pemuatan malas. Ia meliputi persediaan, pemetaan entiti, dan amalan terbaik untuk mengoptimumkan prestasi sambil menonjolkan potensi perangkap. [159 aksara]

Bagaimanakah mekanisme kelas muatan Java berfungsi, termasuk kelas yang berbeza dan model delegasi mereka?Bagaimanakah mekanisme kelas muatan Java berfungsi, termasuk kelas yang berbeza dan model delegasi mereka?Mar 17, 2025 pm 05:35 PM

Kelas kelas Java melibatkan pemuatan, menghubungkan, dan memulakan kelas menggunakan sistem hierarki dengan bootstrap, lanjutan, dan pemuat kelas aplikasi. Model delegasi induk memastikan kelas teras dimuatkan dahulu, yang mempengaruhi LOA kelas tersuai

See all articles

Alat AI Hot

Undresser.AI Undress

Undresser.AI Undress

Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover

AI Clothes Remover

Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool

Undress AI Tool

Gambar buka pakaian secara percuma

Clothoff.io

Clothoff.io

Penyingkiran pakaian AI

AI Hentai Generator

AI Hentai Generator

Menjana ai hentai secara percuma.

Artikel Panas

R.E.P.O. Kristal tenaga dijelaskan dan apa yang mereka lakukan (kristal kuning)
4 minggu yang laluBy尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Tetapan grafik terbaik
4 minggu yang laluBy尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Cara Memperbaiki Audio Jika anda tidak dapat mendengar sesiapa
1 bulan yang laluBy尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Arahan sembang dan cara menggunakannya
1 bulan yang laluBy尊渡假赌尊渡假赌尊渡假赌

Alat panas

MantisBT

MantisBT

Mantis ialah alat pengesan kecacatan berasaskan web yang mudah digunakan yang direka untuk membantu dalam pengesanan kecacatan produk. Ia memerlukan PHP, MySQL dan pelayan web. Lihat perkhidmatan demo dan pengehosan kami.

Penyesuai Pelayan SAP NetWeaver untuk Eclipse

Penyesuai Pelayan SAP NetWeaver untuk Eclipse

Integrasikan Eclipse dengan pelayan aplikasi SAP NetWeaver.

VSCode Windows 64-bit Muat Turun

VSCode Windows 64-bit Muat Turun

Editor IDE percuma dan berkuasa yang dilancarkan oleh Microsoft

SublimeText3 versi Inggeris

SublimeText3 versi Inggeris

Disyorkan: Versi Win, menyokong gesaan kod!

ZendStudio 13.5.1 Mac

ZendStudio 13.5.1 Mac

Persekitaran pembangunan bersepadu PHP yang berkuasa