每次更改时Eclipse自动生成serialVersionUID

时间:2009-09-23 07:47:38

标签: java eclipse code-generation serialversionuid

Eclipse很好地为我生成了serialVersionUID。但这似乎是被动代码生成,因为我更改文件时id不会自动更新,除非我再次生成代码。

有没有办法在每次更改内容时生成serialVersionUID? “保存行动”似乎没有包含这样的选项 - 有人找到了某种方法来做到这一点吗?

它可以与IDE保存操作或类似的东西结合使用,以便我可以恢复更改,如果我这样做不会影响序列化。

祝你好运, Touko

编辑:@gustafc:有两个要点:

  • 如果我理解正确,不同的编译器最终可能会有不同的serialVersionUID值
    • 来自Serializable API但是,强烈建议所有可序列化的类显式声明serialVersionUID值,因为默认的serialVersionUID计算对类详细信息高度敏感,这可能因编译器实现而异,因此可以在反序列化期间导致意外的InvalidClassExceptions
  • 我正在使用类似命令模式的对象在服务器上做事。因此,即使对象内容没有改变,当客户端和服务器上的类内容不同时捕获这些情况也会很好。
    • 但是在考虑另一次时,这个不太可能与自动生成的值一起使用,因为只有内容更改才会改变这一点?所以,实际上我想要一个自动递增的serialVersionUID

这听起来合理吗?

Summa summarum,经过多思考后,每次更改时自动递增的serialVersionUID会更好......

3 个答案:

答案 0 :(得分:4)

Eclipse中没有标准功能来执行此操作。

答案 1 :(得分:2)

您可以使用Ant SerialVer task在构建时更新序列版本。

答案 2 :(得分:0)

  

我更改文件时不会自动更新ID,除非我再次生成。

AFAIK默认serialVersionUID就是这个 - 基于类的当前“形状”生成的id。因此,如果您希望在更改任何内容时生成您的ID,请将其删除。

但是,如果您有时只想更改serialVersionUID - 只需更改它即可。对id进行随机修改即可。

随机数只比连续数字好一点(如果你可以假设没有其他人在你的环境中构成一个具有相同限定名称的类),那么你甚至可以从serialVersionUID = 1开始并在将