当read / writeObject方法可序列化时,为什么可以使用Externalizable

时间:2018-03-28 10:25:23

标签: java serialization deserialization externalizable

我无法清除我的这种困惑,

使用Externalizable是因为我们可以使用read / writeExternal方法给出我们自己(更有效)的序列化 - 反序列化实现。并控制序列化过程。

我们也可以使用read / writeObject方法,序列化过程将被覆盖。

那为什么甚至需要Externalizable?

为什么有人喜欢read / writeExternal而不是read / writeObject?

1 个答案:

答案 0 :(得分:1)

只是在序列化的情况下进行自定义。

原因在Externalizable docs

中给出
  

Externalizable接口的writeExternal和readExternal方法由类实现,以使类完全控制对象及其超类型的流的格式和内容。这些方法必须明确地与超类型协调以保存其状态。 这些方法取代了writeObject和readObject方法的自定义实现。   对象序列化使用Serializable和Externalizable接口。对象持久性机制也可以使用它们。要为Externalizable接口测试要存储的每个对象。如果对象支持Externalizable,则调用writeExternal方法。如果对象不支持Externalizable并且实现Serializable,则使用ObjectOutputStream保存对象。 **