java中的序列化和外部化

java中的序列化和外部化,java,serialization,Java,Serialization,可能重复: java中序列化和外部化之间的区别是什么?基本上,和之间的区别是,对于实现可序列化的类,对象的序列化是自动完成的,而实现可外部化的类则负责自身的序列化,没有默认序列化过程的帮助 API规范中提供了有关接口和接口的更多信息。从Externalizable接口文档: 只有类的标识 外部化实例是用 序列化流,它是 班级拯救的责任 并恢复其内容 实例。书面的外部和外部的 读取的外部方法 外部化接口是 由类实现,以提供 类完成对格式的控制 和的流的内容 对象及其超类型 这篇文章在“创建您自己

可能重复:


java中序列化和外部化之间的区别是什么?

基本上,和之间的区别是,对于实现可序列化的类,对象的序列化是自动完成的,而实现可外部化的类则负责自身的序列化,没有默认序列化过程的帮助

API规范中提供了有关接口和接口的更多信息。从
Externalizable
接口文档:

只有类的标识 外部化实例是用 序列化流,它是 班级拯救的责任 并恢复其内容 实例。书面的外部和外部的 读取的外部方法 外部化接口是 由类实现,以提供 类完成对格式的控制 和的流的内容 对象及其超类型


这篇文章在“创建您自己的协议:外部化接口”一节中讨论了
Externalizable
接口。

我建议阅读一篇名为的文章,该文章描述了序列化和外部化之间的区别

首先是描述什么是序列化:

Java中对象的序列化 允许您创建字节序列 从任何已实现的对象 可串行化接口;它也 允许您转换该字节序列 回到一个物体上

接下来,它描述了外部化可能比序列化更可取的情况:

有时你可能会 对项目的特殊要求 对象的序列化。对于 例如,您可能有一些 网络安全敏感部分 对象,如密码,您可以 不想保留和转移 某处。或者,这可能是毫无价值的 保存引用的特定对象 因为它的值 恢复后将变得一文不值

你可以控制这个过程 通过实现 外部化接口,而不是 可序列化。此接口扩展了 原始可序列化接口 并添加writeExternal()和 readExternal()。这两种方法将 自动在您的 对象的序列化和 反序列化,允许您 控制整个过程


我建议阅读整篇文章,因为上面的摘录没有涵盖细节。本文还包含一些您可能会发现有用的代码片段。

-1作为副本(请参阅Macarse的答案)修复了链接,谢谢!