【发布时间】:2015-02-11 23:46:50
【问题描述】:
我有几个可序列化的类在编译时没有指定 serialVersionUID。我现在需要向这些类添加一些数据成员,但希望保留一些已经序列化的对象。
有没有办法找出这些序列化对象的serialVersionUID,以便我可以在源代码中指定相同的ID?
【问题讨论】:
标签: java serialization
我有几个可序列化的类在编译时没有指定 serialVersionUID。我现在需要向这些类添加一些数据成员,但希望保留一些已经序列化的对象。
有没有办法找出这些序列化对象的serialVersionUID,以便我可以在源代码中指定相同的ID?
【问题讨论】:
标签: java serialization
如果您尚未修改代码,您可能可以运行 serialver 工具(JDK 的一部分)并查看它生成的内容。我相信这会让你知道计算出的seriVersionUID 是什么。
【讨论】:
我通常做的是,我编译代码,尝试运行它,并且引发的异常提到了有问题的 SVUID,所以我可以将它剪切并粘贴到我自己的代码中。粗制滥造,但它有效。
【讨论】:
如果您使用的是 Eclipse,它有一个“快速修复”来生成计算出的 serialVersionUID。 当然,这只有在对象被序列化时拥有类的(确切)源时才有效。
如果您至少有它们的类文件,请使用“serialver”命令行工具(JDK 附带)。
【讨论】: