Java 序列化:扩展、定制与持久化策略
1. 扩展和定制序列化
在大多数情况下,Java 序列化 API 开箱即用的功能已经足够强大,但在某些场景下,开发者需要对序列化过程进行更精细的控制。例如,有时我们不希望类的每个字段都被序列化到磁盘;有时我们想在序列化流中添加类字段之外的额外信息,或者在序列化之前修改类的某些成员。当类的定义发生修改(如字段重命名、添加或删除字段)时,之前序列化的类在反序列化时会出错,这就需要对序列化进行定制。下面介绍几种常用的定制和扩展 Java 序列化的机制。
1.1 transient 关键字
在 Java 中, transient
关键字用于 Java 序列化。任何被标记为 transient
的字段都不会被保存到磁盘。这在类包含一个未实现 Serializable
接口的对象引用,但又想将类实例持久化到磁盘时非常有用。另外,某些依赖于运行时的字段也不应该被持久化。
例如,在 Configuration
对象中,我们可能想额外存储一个对应用程序的引用(可能用于回调)。当将应用程序保存到磁盘时,肯定不希望持久化应用程序及其对象图中的所有关联对象(即使这些对象都实现了 Serializable
接口)。要将一个字段标记为 transient
,只需在对象或基本类型的定义前加上该关键字:
private transient Application application;
</