我已经编写了一个Android应用程序,用于生成并将“摄影服务”合同保存到设备中,作为稍后打印的文件。该类几乎由整数,双精度和字符串组成(包括base64_encoded签名)。
该类实现了serialisable。但是,我担心我更新应用程序,忘记不编辑课程&编辑它,重新加载到我的设备上并将X个合同保存到文件中,然后无法检索它们。
早些时候我正在浏览并找到serialVersionUID。在一篇文章中,我只是通过实现这个简单的long值来阅读,如果我更新了类,它仍然可以被读取。它是否正确?我阅读了Serializable的java文档,并且无法对实现serialVersionUID的结果做出很多决定。
任何人都可以帮我解决这个问题吗? 只是一个简单的是,这将工作或没有这不会工作是足够的,任何帮助我学习的链接将更好!
答案 0 :(得分:1)
要获得序列化的向后兼容性,您必须
示例:
// Old format
class FileFormat implements Serializable {
static final long serialVersionUID = 44L;
public String member1;
}
...
// New format
class FileFormat implements Serializable {
static final long serialVersionUID = 44L;
public String member1;
public int member2;
}
在上面,用户第一次使用新的应用程序读取使用旧FileFormat序列化的文件时,他/她将获得一个新的格式FileFormat对象,其中member2设置为0.(字符串/对象将为null,浮动将是0.0f,双倍0.0等。)。
还有很多其他限制,请查看官方文件: http://docs.oracle.com/javase/6/docs/platform/serialization/spec/version.html