对你来说最简单的事情仍然是使用序列化,IMO,但更多地考虑类的序列化形式(无论如何你真的应该这样做)。例如:
- 显式定义 SerialUID。
- 在适当的地方定义您自己的序列化表单。
序列化形式是类 API 的一部分,在其设计中应仔细考虑。
我不会详细介绍,因为我所说的几乎所有内容都来自 Effective Java。相反,我将向您推荐它,特别是有关序列化的章节。它会警告您遇到的所有问题,并为问题提供适当的解决方案:
http://www.amazon.com/Effective-Java-2nd-Joshua-Bloch/dp/0321356683
话虽如此,如果您仍在考虑非序列化方法,这里有几个:
XML 编组
正如许多人指出的那样,这是一种选择,但我认为您仍然会遇到向后兼容性的相同问题。但是,通过 XML 编组,您有望立即捕捉到这些,因为某些框架可能会在初始化期间为您做一些检查。
与 YAML 的转换
这是我一直在玩弄的一个想法,但我真的很喜欢 YAML 格式(至少作为自定义的 toString() 格式)。但实际上,对您而言,唯一的区别是您将编组为 YAML 而不是 XML。唯一的好处是 YAML 比 XML 更易于阅读。同样的限制适用。