通过实现 Serializable 接口,Java 对象可以序列化为字节序列:通过 ObjectOutputStream 序列化对象,写入对象状态。通过 ObjectInputStream 反序列化对象,从输入流中读取对象状态。注意事项:仅实现了 Serializable 接口的类可序列化。瞬态字段不会序列化。writeObject 和 readObject 方法可用于自定义序列化行为。序列化对象不能包含对未实现 Serializable 接口的类或非静态内部类的引用。
如何使用 Java 实现序列化
序列化是一种将对象转换为字节序列的过程,该字节序列可以存储或传输,然后可以反序列化回原始对象。Java 通过 Serializable 接口提供了对序列化的支持。
实现序列化
要实现序列化,类必须实现 Serializable 接口。这会向类添加以下方法:
writeObject(ObjectOutputStream out):将对象的状态写入输出流。readObject(ObjectInputStream in
):从输入流中读取对象的状态并还原对象。序列化对象
要序列化对象,可以使用 ObjectOutputStream 类。以下代码段演示了如何序列化对象:
ObjectOutputStream out = new ObjectOutputStream(new FileOutputStream("object.ser"));
out.writeObject(object);
out.close();反序列化对象
要反序列化对象,可以使用 ObjectInputStream 类。以下代码段演示了如何反序列化对象:
ObjectInputStream in = new ObjectInputStream(new FileInputStream("object.ser"));
Object restoredObject = in.readObject();
in.close();注意事项
Serializable 接口的类才能序列化。transient 关键字声明的字段)在序列化过程中不会被考虑。writeObject 和 readObject 方法通常由子类覆盖以自定义序列化行为。Serializable 接口的类或非静态内部类的引用。