Java中可外部化与可序列化之间的区别

知道Externalizable与Serializable之间区别在两个方面都很重要,一是(如果可以作为面试问题查询,二是)您可以使用该知识来做出更明智的决策,以提高将序列化应用到应用程序中的性能。

1. Externalizable与Serializable之间的区别

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

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

请注意,Externalizable接口是Serializableie的子接口Externalizable extends Serializable。因此,如果任何类实现Externalizable接口并重写它writeExternal()readExternal()方法,然后第一优选这些方法在默认序列化机制由JVM提供。

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

2.阅读有关可外部化和可序列化的更多信息

将您的问题放在与Java中的Externalizable和Serializable接口有关的注解部分

学习愉快!

saigon has written 1440 articles

Leave a Reply