繁体   English   中英

每次更改时Eclipse自动生成serialVersionUID

[英]Eclipse auto-generation of serialVersionUID with each change

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

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

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

此致,Touko

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

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

这听起来合情合理吗?

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

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

您可以使用Ant SerialVer任务在构建时更新串行版本。

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

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

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM