如何在 Java 中序列化和反序列化一个对象?
序列化是一个将对象的状态转换为字节流的过程,如果一个类的类或父类实现了 Serializable 或 Externalizable 接口,那么这个对象就是可序列化的,反序列化是将序列化对象转换回对象副本的过程。
在序列化期间,如果我们不想使用 transient 关键字在字节流中写入特定变量的状态。
当 JVM 遇到 transient 关键字时,它会忽略变量的原始状态并存储该数据类型(即 int 为 0、byte 为 0、float 为 0.0 等等)的默认值。对象的序列化可以通过 FileOutputStream 和 ObjectOutputStream 类来完成。
示例
import java.io.*; public class SerializationTest implements Serializable { int a = 1, b = 2; transient int c = 3; public static void main(String[] args) throws Exception { SerializationTest obj = new SerializationTest(); // serialization FileOutputStream fos = new FileOutputStream("serialization.txt"); ObjectOutputStream oos = new ObjectOutputStream(fos); oos.writeObject(obj); // de-serialization FileInputStream fis = new FileInputStream("serialization.txt"); ObjectInputStream ois = new ObjectInputStream(fis); SerializationTest test = (SerializationTest)ois.readObject(); System.out.println("a = " + test.a); System.out.println("b = " + test.b); System.out.println("c = " + test.c); } }
输出
a = 1 b = 2 c = 0
广告