如何找到序列化Java对象的serialVersionUID?

我有几个可序列化的类,编译时没有指定serialVersionUID。 我现在需要向这些类添加一些数据成员,但希望保留一些已经序列化的对象。

有没有找到这些序列化对象的serialVersionUID,以便我可以在源代码中指定相同的ID?

如果您尚未修改代码,则可以运行serialver工具(JDK的一部分)并查看它生成的内容。 我相信这将为您提供计算出的seriVersionUID

这是关于serialver的简短文章。

我通常做的是,我编译代码,尝试运行它,并且引发的exception提到了违规的SVUID,所以我可以将其剪切并粘贴到我自己的代码中。 原油,但它的工作原理。

如果您使用的是Eclipse,则可以通过“快速修复”来生成计算出的serialVersionUID。 这当然只有在对象被序列化时具有类的(确切)源时才有效。

如果您至少拥有类文件,请使用“serialver”命令行工具(随JDK提供)。