如何在Java中序列化不可序列化?

2022-09-01 02:40:58

如何序列化未实现可序列化的对象?我无法将其标记为可序列化,因为该类来自第三方库。


答案 1

不能序列化未实现 的类,但可以将其包装在实现 的类中。为此,您应该在包装类上实现 和,以便可以以自定义方式序列化其对象。SerializablereadObjectwriteObject

  • 首先,创建不可序列化的字段。transient
  • 在 中,首先调用流以存储所有非瞬态字段,然后调用其他方法来序列化不可序列化对象的各个属性。writeObjectdefaultWriteObject
  • 在 中,首先调用流以读回所有非瞬态字段,然后调用其他方法(对应于您添加到的方法)来反序列化不可序列化的对象。readObjectdefaultReadObjectwriteObject

我希望这是有道理的。:-)


答案 2

将不可序列化的类包装在您自己的类中,该类实现 .在类的方法中,执行任何必要的操作来序列化有关不可序列化对象的足够信息,以便类的方法可以重构它。SerializablewriteObjectreadObject

或者,与不可序列化的类的开发人员联系,并告诉他修复它。:-)