java 中实现序列化,只要实现Serializbale这个接口,那么这个类就能序列化了。序列化就是把对象转化为二进制编码,有两个作用1.用于网络传输。2.可以存储到硬盘中,用来保存。类对象都是在内存中的,当系统关闭后对象就没了,下次启动时重新生成对象,不能保存当时状态。有序列化,就有反序列化,反序列化就是恢复当时状态的类对象。
实现Serializable接口就行了,这个接口只是一个标记接口,不提供任何方法,Java序列化意义就是把Java在内存中的对象按照一定的格式以字节流的方式传输到别的地方,相当于传输协议,不然就会造成接收端数据错乱。就像我和你打电话,你只能听懂中文,我硬是用英文跟你说了一大堆,在你看来那些英文就是一堆乱码,
首先我们要把准备要序列化类,实现 Serializabel接口例如:我们要Person类里的name和age都序列化import java.io.Serializable;public class Person implements Serializable { //本类可以序列化private String name ;private int age ;public Person(String name,int age){this.name = name ;this.age = age ;}public String toString(){return "姓名:" + this.name + ",年龄" + this.age ;}}然后:我们将name和age序列化(也就是把这2个对象转为二进制,统族理解为“打碎”)package org.lxh.SerDemo;import java.io.File;import java.io.FileOutputStream;import java.io.ObjectOutputStream ;public class ObjectOutputStreamDemo { //序列化public static void main(String[] args) throws Exception {//序列化后生成指定文件路径File file = new File("D:" + File.separator + "person.ser") ; ObjectOutputStream oos = null ;//装饰流(流)oos = new ObjectOutputStream(new FileOutputStream(file)) ; //实例化类Person per = new Person("张三",30) ; oos.writeObject(per) ;//把类对象序列化oos.close() ;}}
序列化的过程就是对象写入字节流和从字节流中读取对象。java对象序列化可以保留一个对象的数据,而且还可以递归保存对象引用的每个对象的数据。可以将整个对象层次写入字节流中,可以保存在文件中或在网络连接上传递。利用对象序列化可以进行对象的“深复制”,即复制对象本身及引用的对象本身。序列化一个对象可能得到整个对象序列。序列化分为两大部分:序列化和反序列化。序列化是这个过程的第一部分,将数据分解成字节流,以便存储在文件中或在网络上传输。反序列化就是打开字节流并重构对象。对象序列化不仅要将基本数据类型转换成字节表示,有时还要恢复数据。恢复数据要求有恢复数据的对象实例。