以前的开发人员将序列化对象保存到许多不同的数据库中。每次在部署到新位置之前完成一些开发工作。 serialVersionUID保持动态,因此每个数据库都有不同的对象版本(虽然类似,但使用静态序列ID进行投射)。
我的任务是使用新功能更新旧网站。读取和编写序列化对象非常痛苦。我真的想将它们标准化。这些对象是深层嵌套和多态的。获取原始数据和转码将是一项艰巨的任务。有没有一种快速的方法将对象规范化为静态序列号?
答案 0 :(得分:0)
serialVersionUID
需要明确设置为数据库中的值。在反序列化对象并且本地类已更改时,您将在异常消息中看到所需的值。
答案 1 :(得分:-1)
我发现任何人在找到答案之前先回答我的问题。
Make Java runtime ignore serialVersionUIDs?
编辑*
有人指出,我链接的答案是我没有指明实际的解决方案。 ObjectInputStream对正在解除序列的对象执行UID检查。通过重写流读取机制并且不执行UID检查,可以避免问题。
但请不要将序列化数据存储在数据库中。使用可以更改的类来保存序列化数据只是在寻找麻烦。