我在序列化和反序列化我的项目中的对象时遇到问题。我正在将该对象写入一个name.dat文件。 但是,每当我在Name类中进行更改时,我都可以不再反序列化它,因为它是两个不同的对象。旧对象的Java反序列化
有没有办法解决这个问题?
我在序列化和反序列化我的项目中的对象时遇到问题。我正在将该对象写入一个name.dat文件。 但是,每当我在Name类中进行更改时,我都可以不再反序列化它,因为它是两个不同的对象。旧对象的Java反序列化
有没有办法解决这个问题?
你最好的选择是:
考虑到1)和2)可能不合理,选项3)应予以认真考虑。 Java序列化有多种替代方法,具体取决于您持续保存的数据的性质。这些包括:
最后,可以使用Java对象序列化来实现类的版本。然而,这很棘手。如果你不断地改变课程,那么它不会很愉快。首先阅读Versioning of Serializable Objects。
4.'static final long serialVersionUID = 1L;'或任何旧值。 – EJP
是的......直到你做出不兼容的变化,它全部变成梨形。所以,真的,不。 –
非常感谢!尽管添加static final serialVersionUID = 1L似乎更容易一些; :) –
我想通了! –
这是两个不同的类*,错误消息告诉你你需要做什么。 – EJP
这就是为什么Java的内置序列化机制不适合长期存储数据的原因。使用诸如XML或JSON之类的标准格式来存储数据。 – Jesper