每次更改时Eclipse自动生成serialVersionUID
Eclipse很好地为我生成了serialVersionUID。 但这似乎是被动代码生成,因为我更改文件时id不会自动更新,除非我再次生成代码。
有没有办法在每次更改内容时生成serialVersionUID? “保存行动”似乎没有包含这样的选项 – 有人找到了某种方法来做到这一点吗?
它可以与IDE保存操作或类似的东西结合使用,这样我可以恢复更改,如果我这样做不会影响序列化。
最好的问候,Touko
编辑:@gustafc:有两个要点:
- 如果我理解正确,不同的编译器最终可能会有不同的serialVersionUID值
- 从Serializable API : 但是,强烈建议所有可序列化类显式声明serialVersionUID值,因为默认的serialVersionUID计算对类详细信息高度敏感,可能因编译器实现而异,因此在反序列化期间可能导致意外的InvalidClassExceptions
- 我正在使用类似命令模式的对象在服务器上做事情。 因此,即使对象内容没有改变,当客户端和服务器上的类内容不同时捕获这些情况也会很好。
- 但是在考虑另一个时间,这个不可能与自动生成的值一起使用,因为只有内容更改才会改变这一点? 所以,实际上我想要一个自动递增的serialVersionUID
这听起来合情合理吗?
Summa summarum,经过多思考后,每次更改时自动递增的serialVersionUID会更好……
Eclipse中没有标准function来执行此操作。
您可以使用Ant SerialVer任务在构建时更新串行版本。
我更改文件时不会自动更新ID,除非我再次进行生成。
AFAIK默认的serialVersionUID
就是这个 – 基于类的当前“形状”生成的id。 因此,如果您希望在更改任何内容时生成您的ID,请将其删除。
但是,如果您有时只想更改serialVersionUID
– 只需更改它。 对id进行随机修改即可。
随机数只比连续数字好一点(如果你可以假设没有其他人在你的环境中组成一个具有相同限定名称的类),那么你甚至可以从serialVersionUID = 1
开始并serialVersionUID = 1
增加这个数字。