有加罚吗
implements Serializable
到 Java 类?对实例化对象的大小或性能的影响?
除非您执行序列化/反序列化,否则不会对性能产生影响,但在 api 设计方面需要权衡取舍。
来自Joshua Bloch 的Effective java
- 实现 Serializable 的一个主要成本是它降低了在类发布后更改其实现的灵活性
- 实现 Serializable 的第二个成本是它增加了错误和安全漏洞的可能性
- 实现 Serializable 的第三个成本是它增加了与发布类的新版本相关的测试负担
这些在多大程度上适用于您取决于您的用例。
除非您/其他人实际序列化/反序列化,否则不会有任何影响。Serializable
只是一个标记界面。
它可能只会将生成的字节码的大小增加几个字节。
成本接近于零,不值得关注。
一些进一步的细节:
您应该始终首先考虑维护开销。已部署应用程序的实时成本可能是开发成本的数倍。
在这种情况下,使类可序列化但实际上并未用于序列化的成本可能会导致错误或混乱,这远远超过性能成本。例如,说它需要 1 分钟或某人的时间来确定不需要 Serializable,这可能比应用程序产生的几纳秒额外启动时间要多得多。
如果您确实需要它是可序列化的,则无法将其与不可序列化的版本进行比较,因为只有第一种情况才能真正完成所需的工作。
Serializable
只是一个“标记”界面。它不需要您实现任何方法。
唯一的一点是建议有一个static final long serialVersionUID
帮助序列化的API。long
每个序列化类需要一个值。
您可能想查看这篇关于 Java 序列化 API的文章。它详细描述了序列化/反序列化的大部分注意事项。