读取签名从文件中更改了可序列化对象

时间:2015-08-19 09:36:37

标签: java android serialization android-file

我有一个名为Serializable的{​​{1}}类及其属性和方法。我正在使用以下代码来编写和读取文件中的对象。

保存(没有异常处理代码):

SimpleClass

加载(没有异常处理代码):

FileOutputStream fos = context.openFileOutput(fileName, Context.MODE_PRIVATE);
ObjectOutputStream os = new ObjectOutputStream(fos);
os.writeObject(simpleClass);
os.close();
fos.close();

过了一会儿,我给它添加了一个getter方法(只有方法,而不是属性)。
在此之后,FileInputStream fis = context.openFileInput(fileName); ObjectInputStream is = new ObjectInputStream(fis); SimpleClass simpleClass = (SimpleClass) is.readObject(); is.close(); fis.close(); 失败。该文件在那里,我认为添加方法导致了这一点 即,保存在文件中的对象与我现在拥有的对象不同。
这有什么解决方法吗?如何在不删除其他方法的情况下读取旧对象?

2 个答案:

答案 0 :(得分:0)

SimpleClass.java 中为 serialVersionUID 定义long值。我假设您可以编辑该类。

 private static final long serialVersionUID = 1L;

使其成为一个独特的身份。

答案 1 :(得分:0)

您需要在更改之前在类上运行serialver工具,并将生成的serialVersionUID值添加到现在的类中。