【发布时间】:2011-11-04 13:25:46
【问题描述】:
Web 应用程序中的常见场景:
- 应用程序有很多类需要存储在 Session 中并且是可序列化的
- 开发人员收到一堆关于“Serializable 类未实现 serialVersionUID”的警告
- 开发者耸耸肩,点击 IDE 的“add serialversionUID”,问题就解决了吗?
原则上我不喜欢自动添加serialVersionUID,因为该解决方案本质上意味着
- 最重要的是,开发人员声明“我知道我的更改什么时候会破坏序列化,什么时候不会,并且想要控制它而不是 JVM”,而实际上他不知道这些事情并且不知道想要控制他们
- 添加 serialVersionUID = 6266256561409620894L 既混乱又丑陋(好吧,你可以使用 1L)
我了解在存在类兼容性问题的应用程序中添加 serialVersionUID,开发人员会积极考虑并理解相关问题。
在典型的 Web 应用程序中,类的序列化何时中断并不重要。部署新版本时,可能会破坏一些无关的序列化会话,但这通常不是问题(很少有应用程序真正正确处理序列化会话的版本兼容性)。
底线:建议“始终在源文件中明确定义 serialVersionUID”不是很简单吗?
【问题讨论】:
标签: java serialization serialversionuid