java对象的序列化和反序列化
本文实例为大家分享了java对象的序列化和反序列化,供大家参考,具体内容如下
1. 什么是序列化
将对象转换为字节流保存起来,比如保存到文件里,并在以后还原这个对象,这种机制叫做对象序列化。(补充一句:把对象保存到永久存储设备上称为持久化)
2. 怎么实现序列化
需要实现Serializable接口,java对象实现了这个接口就表明这个这个类的对象是可序列化的。
3. 序列化的注意事项
(1) 当一个对象序列化时,只能保存对象的非静态成员变量,不能保存方法和静态成员变量。
(2) 对象A引用了对象B,对象A序列化了,B也跟着序列化了。
(3) 如果一个可序化对象包含了一个不可序列化对象的引用,那么整个序列化操作就会失败,失败就会抛NotSerializableException,所以,本身对象和引用对象都要实现Serializable接口才可以进行序列化。
(4) transient的使用,成员变量或者引用标记为transient,那么对象仍可序死化,只是不会被序列化到文件中。
4. 代码
public class Person implements Serializable { private String name; private transient int age; public Person(String name, int age) { super(); this.name = name; this.age = age; } public String toString() { return this.name + "-" + this.age; } }
public class SerializableClient { public static void main(String[] args) throws Exception { Person p1 = new Person("zhangsan", 5); Person p2 = new Person("lisi", 100); //序列化 FileOutputStream fos = new FileOutputStream("person.txt"); ObjectOutputStream oos = new ObjectOutputStream(fos); oos.writeObject(p1); oos.writeObject(p2); System.out.println("---------"); //反序列化 FileInputStream fis = new FileInputStream("person.txt"); ObjectInputStream ois = new ObjectInputStream(fis); for(int i = 0; i < 2; i++) { Person tempPerson = (Person)ois.readObject(); System.out.println(tempPerson); } } }
输出结果:
---------
zhangsan-0
lisi-0
5. 更细粒度的控制序列化和反序化
当我们在序列化或者反序列化的类中实现了以上两个private方法(方法声明要与上面的保持完全一致),那么就允许我们以更加底层、更加继粒度的方式控制序列化和反序列化的过程。
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支PHP中文网。
更多java对象的序列化和反序列化相关文章请关注PHP中文网!

Alat AI Hot

Undresser.AI Undress
Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover
Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool
Gambar buka pakaian secara percuma

Clothoff.io
Penyingkiran pakaian AI

Video Face Swap
Tukar muka dalam mana-mana video dengan mudah menggunakan alat tukar muka AI percuma kami!

Artikel Panas

Alat panas

Notepad++7.3.1
Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina
Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1
Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6
Alat pembangunan web visual

SublimeText3 versi Mac
Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Topik panas

Penyelesaian masalah dan penyelesaian kepada perisian keselamatan syarikat yang menyebabkan beberapa aplikasi tidak berfungsi dengan baik. Banyak syarikat akan menggunakan perisian keselamatan untuk memastikan keselamatan rangkaian dalaman. …

Apabila menggunakan Mybatis-Plus atau Rangka Kerja ORM yang lain untuk operasi pangkalan data, sering diperlukan untuk membina syarat pertanyaan berdasarkan nama atribut kelas entiti. Sekiranya anda secara manual setiap kali ...

Pemprosesan pemetaan medan dalam dok sistem sering menemui masalah yang sukar ketika melaksanakan sistem dok: bagaimana untuk memetakan medan antara muka sistem dengan berkesan ...

Penyelesaian untuk menukar nama kepada nombor untuk melaksanakan penyortiran dalam banyak senario aplikasi, pengguna mungkin perlu menyusun kumpulan, terutama dalam satu ...

Mula musim bunga menggunakan versi IntelliJideaultimate ...

Penukaran objek dan tatasusunan Java: Perbincangan mendalam tentang risiko dan kaedah penukaran jenis cast yang betul Banyak pemula Java akan menemui penukaran objek ke dalam array ...

Apabila menggunakan tkmybatis untuk pertanyaan pangkalan data, bagaimana dengan anggun mendapatkan nama pembolehubah kelas entiti untuk membina keadaan pertanyaan adalah masalah biasa. Artikel ini akan ...

Penjelasan terperinci mengenai reka bentuk jadual SKU dan SPU di platform e-dagang Artikel ini akan membincangkan isu reka bentuk pangkalan data SKU dan SPU dalam platform e-dagang, terutamanya bagaimana menangani jualan yang ditentukan pengguna ...
