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

标签 java android

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

例如,如果我有 carClass:

String make;
String model;

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

但是当我尝试扩展该类以包含其他内容(即颜色)时:

String make;
String model;
String color;

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

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

最佳答案

在您的类中声明一个staticfinallongserialVersionUID。这将使其向前/向后兼容,例如

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

兼容

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

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

关于java - 当类发生更改时,从文件加载序列化类(Java/Android),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25501941/

相关文章:

android - Android 上的 Listview 波纹效果

java - 图像卷积代码不能正确显示图像?

FileZilla 的 Java FTP 连接问题

java - 使用 InfiniteViewPager 将按钮隐藏为位置的函数

android - 如何在 Android Instrumentation 测试中定义和使用系统属性?

android - RecyclerView 适配器问题中的 ProgressDialog

java - 允许向导仅从现有项目运行

java - 更高级的表格/电子表格 SWT 实现

Android:设置对话框的尺寸( "fill_parent"是什么意思?)

android - 如何在更改 android 对话框内容时保持参数/比例