我无法清除我的这种困惑,
使用Externalizable是因为我们可以使用read / writeExternal方法给出我们自己(更有效)的序列化 - 反序列化实现。并控制序列化过程。
我们也可以使用read / writeObject方法,序列化过程将被覆盖。
那为什么甚至需要Externalizable?
为什么有人喜欢read / writeExternal而不是read / writeObject?
答案 0 :(得分:1)
只是在序列化的情况下进行自定义。
原因在Externalizable docs
中给出Externalizable接口的writeExternal和readExternal方法由类实现,以使类完全控制对象及其超类型的流的格式和内容。这些方法必须明确地与超类型协调以保存其状态。 这些方法取代了writeObject和readObject方法的自定义实现。 对象序列化使用Serializable和Externalizable接口。对象持久性机制也可以使用它们。要为Externalizable接口测试要存储的每个对象。如果对象支持Externalizable,则调用writeExternal方法。如果对象不支持Externalizable并且实现Serializable,则使用ObjectOutputStream保存对象。 **