我有一个名为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();
失败。该文件在那里,我认为添加方法导致了这一点
即,保存在文件中的对象与我现在拥有的对象不同。
这有什么解决方法吗?如何在不删除其他方法的情况下读取旧对象?
答案 0 :(得分:0)
在 SimpleClass.java 中为 serialVersionUID 定义long
值。我假设您可以编辑该类。
private static final long serialVersionUID = 1L;
使其成为一个独特的身份。
答案 1 :(得分:0)
您需要在更改之前在类上运行serialver
工具,并将生成的serialVersionUID
值添加到现在的类中。