序列化,类的演变

时间:2011-10-20 03:32:00

标签: java oop serialization object

我需要串行一个对象并将其存储在磁盘上。我使用了Java内置的,只要该类没有变化太多,它就可以正常工作。如果我开始在课堂上乱逛,它就会停止工作。

这里有哪些选项?基本上如果我们有更新,我不想破坏所有用户的数据文件。

到目前为止,我已尝试将序列化为XML(具有相同的问题)。还尝试“手动”配置/数据文件。基本上将所有内容都吐出为XML,加载它然后根据配置文件创建一个新对象。这似乎运作良好,但由于需要进行大量的手工操作,因此需要将所有内容转换为此内容。

还有其他选择吗?

3 个答案:

答案 0 :(得分:1)

  1. protobuf(非常好地支持向前和向后兼容,但你必须编写自己的映射代码)
  2. MessagePack
  3. Apache Avro
  4. Kryo
  5. many more with comparisons here

答案 1 :(得分:1)

答案 2 :(得分:0)

我是一个坚定的信徒(已经学会了很难的方法)为我的序列化对象拥有持久代理。有效的Java有一整章介绍了实现它们的方法。

我这样做的方法是使用一个内部类,它将我的对象放在它的构造函数中,并相应地设置它的内部字段。随着您的真实对象的发展,您可以向代理添加新字段,也可以创建一个全新的代理(保留旧代理以实现向后兼容)。

有关详细信息,请参阅this article