我正在创建一个Serializable对象描述符,它将存储非Serailizable实体的重要状态数据。如何在应用程序升级期间保持旧描述符有效?我正在考虑打开所有已知的先前状态(升级时)并提示状态自我升级。也许通过:
void onUpgrade(int oldVersion, int newVersion, int updateFlags);
但我不知道这是否是可序列化维护的好方法。
答案 0 :(得分:3)
我会为你的外部代表建议另一种形式。如您所述,序列化对象很难保持兼容。最简单的方法是使用jaxb注释注释您的对象,然后使用Jaxb来读/写它。
答案 1 :(得分:1)
对象版本控制的难度通常被夸大了。最重要的是从知道你能做什么和不能做什么开始。请仔细查看对象序列化规范的对象版本控制部分中的规则,并虔诚地遵循它们:
如果这还不够,请准备使用writeReplace()/ readResolve()机制和/或serializableFields机制。