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

Mar*_*n08 34 java serialization

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

Chr*_*ung 28

您不能序列化一个没有实现的类Serializable,但是您可以将它包装在一个类中.要做到这一点,你应该在你的包装器类上实现readObject,writeObject这样你就可以自定义方式序列化它的对象.

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

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

  • 不确定项目符号第2点和第3点的含义可以提供示例代码(java编程中的新手) (2认同)
  • @bmargulies您不能直接序列化未标记为可序列化的类。故事结局。我的答案允许您围绕非可序列化类编写可序列化包装器,以保留其基本状态。 (2认同)

Ste*_*son 5

将非可序列化类包装在您自己的类中Serializable.在类的writeObject方法中,执行必要的操作以序列化非序列化对象上的足够信息,以便类的readObject方法可以重构它.

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