我不能澄清我的困惑,
之所以使用Externalizable,是因为我们可以使用read/writeExternal方法给出我们自己的(更有效的)序列化-反序列化实现。并控制序列化过程。
我们也可以使用read/writeObject方法,序列化过程将被该方法覆盖。
那么为什么Externalizable是必需的呢?
为什么有人更喜欢读/写外部对象而不是读/写对象?
发布于 2018-03-28 18:30:35
只是在序列化的情况下进行定制。
Externalizable文档中给出了原因
Externalizable接口的writeExternal和readExternal方法由一个类实现,以便让该类完全控制对象及其超类型的流的格式和内容。这些方法必须显式地与超类型协调才能保存其状态。这些方法取代了writeObject和readObject方法的自定义实现。对象序列化使用Serializable和Externalizable接口。对象持久化机制也可以使用它们。对要存储的每个对象进行Externalizable接口测试。如果对象支持Externalizable,则调用writeExternal方法。如果对象不支持Externalizable,但实现了Serializable,则使用ObjectOutputStream保存该对象。**
https://stackoverflow.com/questions/49532046
复制相似问题