是否需要加罚
implements Serializable
到Java类?对实例化对象或性能大小的影响?
答案 0 :(得分:24)
除非您/其他人实际序列化/反序列化,否则不会产生任何影响。 Serializable
只是一个标记界面。
它可能只会将生成的字节码的大小增加几个字节。
答案 1 :(得分:24)
成本接近于零,不值得关注。
进一步的细节:
答案 2 :(得分:24)
除非您执行序列化/反序列化,否则没有性能影响,但在api设计方面存在折衷。
来自约书亚布洛赫的Effective java
- 实现Serializable的一个主要成本是它降低了更改类实现的灵活性 释放
- 实施Serializable的第二个成本是它增加了错误和安全漏洞的可能性
- 实施Serializable的第三个成本是它增加了与发布新版本类相关的测试负担
这些适用于您的程度取决于您的用例。
答案 3 :(得分:1)
您应该始终首先考虑维护开销。部署的应用程序在其生命周期内的成本可能是开发它的成本的几倍。
在这种情况下,制作类Serializable但实际上不用于序列化的成本可能导致比性能成本更严重的错误或混乱。例如假设需要1分钟或某人的时间来确定不需要Serializable,这可能远远超过应用程序产生的几纳秒额外启动时间。
如果您确实需要将其作为Serializable,则无法将其与非Serializable版本进行比较,因为只有第一种情况才会真正完成所需的工作。
答案 4 :(得分:0)
Serializable
只是一个“标记”界面。它不要求您实现任何方法。
唯一的建议是建议使用static final long serialVersionUID
来帮助序列化API。每个序列化类花费一个long
值。
您可能想查看this article about Java Serialization API。它详细描述了序列化/反序列化的大部分注意事项。