序列化反序列化概述
什么是序列化?
序列化,是将对象写入到 IO 流中
什么是反序列化?
从 IO 流中恢复对象。
有什么用?
序列化机制允许将实现序列化接口的Java对象转换为字节序列。这些字节序列化可以保存到磁盘上,通过网络传输,以达到恢复到原来的对象的目的。
怎么用?
在远程调用场景 RMI,RPC 都是经常使用,使得相关接口调用实现序列化接口。
如何序列化,反序列化
序列化的步骤:
创建一个输出流 ObjectOutPutStream
调用 ObjectOutPutStream对象的 writeObject 输出可序列化对象。
反序列化步骤:
创建 ObjectInputStream 对象,然后调用ObjectInputStream的 readObject 方法读取对象。
序列化和反序列化代码如下:
package JavaBase.serializable; import java.io.FileInputStream; import java.io.FileOutputStream; import java.io.ObjectInputStream; import java.io.ObjectOutputStream; import java.io.Serializable; class Person implements Serializable { private String name; private int age; public Person(String name, int age) { this.name = name; this.age = age; } /** * @see java.lang.Object#toString() */ @Override public String toString() { return "Person{" + "name='" + name + '\'' + ", age=" + age + '}'; } } public class WriteObject { public static void main(String[] args) { try { // 序列化步骤,新建一个 ObjectOutputStream 镀锡 ObjectOutputStream oos = new ObjectOutputStream(new FileOutputStream("object.txt")); Person person = new Person("xiaoming", 19); // 序列化 写入对象 oos.writeObject(person); // 反序列化 新建一个ObjectInputStream ObjectInputStream ois = new ObjectInputStream(new FileInputStream("object.txt")); // 反序列化 读取 Person per = (Person) ois.readObject(); System.out.println(per); } catch (Exception e) { e.printStackTrace(); } } }