2

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

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

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

那么为什么需要 Externalizable 呢?

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

4

1 回答 1

1

只是序列化时的定制。

原因在Externalizable文档中给出

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

于 2018-03-28T10:30:35.140 回答