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

时间:2009-04-01 00:27:35

标签: java serialization

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

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

3 个答案:

答案 0 :(得分:13)

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

Here is a brief article on serialver.

答案 1 :(得分:6)

我通常做的是,我编译代码,尝试运行它,并且引发的异常提到了违规的SVUID,因此我可以将其剪切并粘贴到我自己的代码中。原油,但它的确有效。

答案 2 :(得分:3)

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

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