gpt4 book ai didi

java - 可以通过序列化进行定制,那么为什么要外部化呢?

转载 作者:行者123 更新时间:2023-11-29 08:52:27 24 4
gpt4 key购买 nike

我已经阅读了关于 SO 的这些文章:

Externalizable or Serializable? ,

What is the difference between Serializable and Externalizable in Java? .

但我的问题是,与 serializable 相比,通过实现 Externalizable 可以获得哪些额外的定制。

通过提供我们自己的writeObject实现,可以自定义实现SerializableSerializationreadObject。那么使用Externalizable和自定义ReadExternalwriteExternal实现的目的是什么。使用 Externalizable 的真正好处是什么。我读过各种链接,上面写着 Externalizable 支持自定义 serialization(包括上面那个)。但我没有看到 Externalizable 是明显的赢家或使用 Serializable 无法完成的示例。很高兴看到这方面的例子。

为了更清楚起见,以下片段摘自 here :

实现Serializable接口(interface)时,它向JVM提供信息,这些实例 >classes 可以序列化。除此之外,还有一个针对 JVM

的特别说明

“在实现 Serializable 的类中寻找以下两个方法。如果找到调用它并继续序列化过程,否则直接遵循标准序列化协议(protocol)”

所以这给了我们写这两个方法的机会:

private void writeObject(ObjectOutputStream out) 抛出 IOException;,private void readObject(ObjectInputStream in) 抛出 IOException, ClassNotFoundException;

在实现SerializableClass 中,您将获得序列化 过程的 Hook 。您可以在这两个方法中编写自定义代码并自定义序列化的标准行为。

最佳答案

Serializable 和 Externalizable 之间的主要区别在于 Serializable 会自动为您处理基类。 Externalizable 将整个工作留给您。

关于java - 可以通过序列化进行定制,那么为什么要外部化呢?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22078407/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com