当类发生更改时,从文件加载序列化类(Java / Android)

时间:2014-08-26 09:05:11

标签: java android

我找到了很多关于如何将序列化类写入/读取文件的答案,并且已成功将其应用到我的Android应用程序中,但我遇到了扩展我的应用程序功能的问题。

例如,如果我有carClass:

String make;
String model;

然后我将其保存到我的保存文件中,每当我加载它时,存储的值都可以:)

但是当我尝试扩展课程以包含其他东西,即颜色时:

String make;
String model;
String color;

当应用程序加载文件时,它会尝试将对象强制转换为新类,并且由于加载的对象没有“颜色”,因此无法加载保存文件。

我如何克服这个问题?目前,每当我向我的应用添加新内容时,用户的保存文件实际上都是无效的,他们必须重新开始,这不是一个好的用户体验!

1 个答案:

答案 0 :(得分:2)

在您的班级中声明static final long serialVersionUID。这将使其向前/向后兼容,例如

String make;
String model;
private static final long serialVersionUID = 0L;

兼容
String make;
String model;
String color;
private static final long serialVersionUID = 0L;

只要保持serialVersionUID的值相同即可。文档here用于android,here用于普通Java。