Java 中Externalizable与Serializable之间的区别

Java 中ExternalizableSerializable之间的区别

原文: https://howtodoinjava.com/java/serialization/externalizable-vs-serializable/

知道ExternalizableSerializable之间的差异在两个方面都很重要,一个是可以作为面试问题询问,另外一个是您可以利用该知识做出更明智的决策,将序列化应用到您的应用中来追求性能提升。

1. ExternalizableSerializable之间的区别

让我们列出 Java 中ExternalizableSerializable接口之间的主要区别。

Externalizable Serializable
Serializable是标记接口,即不包含任何方法。 Externalizable接口包含实现类必须覆盖的两个方法writeExternal()readExternal()
Serializable接口将序列化的职责传递给 JVM 及其默认算法。 Externalizable向程序员提供串行化逻辑的控制-编​​写自定义逻辑。
通常,默认序列化易于实现,但具有较高的性能成本。 使用Externalizable完成的序列化为程序员增加了更多责任,但通常会带来更好的性能。
很难分析和修改类结构,因为任何更改都可能会破坏序列化。 由于可以完全控制序列化逻辑,因此分析和修改类结构更加容易。
默认序列化不调用任何类构造器。 使用Externalizable接口时,需要一个公共的无参数构造器。

请注意,Externalizable接口是Serializable的子接口,即Externalizable extends Serializable。 因此,如果任何类实现Externalizable接口并覆盖其writeExternal()readExternal()方法,则这些方法优先于 JVM 提供的默认序列化机制。

阅读更多:如何在 Java 中覆盖默认的序列化机制

2. 阅读有关ExternalizableSerializable的更多信息

请在与 Java 中的ExternalizableSerializable接口有关的评论部分中提出您的问题。

学习愉快!