我的组织使用自定义序列化技术,我们使用输出流迭代地存储对象。我遇到以下问题:保持向后兼容性的多继承序列化
Parent
和Child
类实现Serializable
。 Parent
班有字段a,b,c
和Child
班有e
。我将字段d
添加到Parent
并更新了父级的序列化,现在我们的旧客户端无法正确读取Child
序列化代码。这是因为Child
序列码云:
OutputStream in = getCurrentOutStream();
current_serialization_num = readVersionNum(in) // The version num is similar to Java's UID and is updated when fields are added.
readParent(in)
e = readField(in)
由于序列化是通过DataOutputStream
完成,良好的XML阅读器不能照顾这。我对这个问题有一个丑陋的解决方案,但是它不会很好地延伸,所以我不想通过介绍它来污染读者的思想。不过,我真的很想听听其他人会如何处理类似的情况。
您是否维护一个串行版本并在进行更改时进行更新? – 2012-07-20 19:23:09
是的,序列版本已更新,但客户端的工具未更新。所以,它期望读取Field e,但是它接收包含d的字节流,然后e。 – Sal 2012-07-20 19:28:14