gpt4 book ai didi

java - Java中的可序列化和可外部化有什么区别?

转载 作者:bug小助手 更新时间:2023-10-28 10:38:44 25 4
gpt4 key购买 nike

Serializable 和有什么区别?和 Externalizable在 Java 中?

最佳答案

要补充其他答案,通过实现 java.io.Serializable,您可以获得类对象的“自动”序列化功能。无需实现任何其他逻辑,它会正常工作。 Java 运行时将使用反射来确定如何编码和解码您的对象。

在早期版本的 Java 中,反射非常慢,因此序列化大型对象图(例如在客户端-服务器 RMI 应用程序中)有点性能问题。为了处理这种情况,提供了 java.io.Externalizable 接口(interface),它类似于 java.io.Serializable 但具有自定义编写的机制来执行编码和解码功能(你需要在你的类上实现 readExternalwriteExternal 方法)。这为您提供了绕过反射性能瓶颈的方法。

在 Java 的最新版本(当然是 1.3 及更高版本)中,反射的性能比以前要好得多,因此这不是什么问题。我怀疑你很难从现代 JVM 的 Externalizable 中获得有意义的好处。

此外,内置的 Java 序列化机制不是唯一的,您可以使用第三方替换,例如 JBoss Serialization,它的速度要快得多,并且是默认的直接替换。

Externalizable 的一大缺点是你必须自己维护这个逻辑 - 如果你在你的类中添加、删除或更改一个字段,你必须更改你的 writeExternal/readExternal 方法来解释它。

总之,Externalizable 是 Java 1.1 时代的遗物。真的不需要了。

关于java - Java中的可序列化和可外部化有什么区别?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/817853/

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