【发布时间】:2014-12-29 16:38:44
【问题描述】:
我正在使用ObjectOutputStream 将我的对象保存到.dat 文件中。
我的问题是,如果我更改对象的源代码(例如,我添加一个方法(getter))
输入流无法加载数据并告诉我有关Serializable 的错误:
有可能解决这个问题吗?如果我更改我的源代码,我必须每次生成新的.dat 文件。
使用此方法: (DONT LOOK AT THE OBJECT TYPE-返回值) 保存
public void saveToFile(HeaderOfMapTeachStructure hm, String nameOfFile) {
try (ObjectOutputStream os = new ObjectOutputStream(
new FileOutputStream(nameOfFile + "." + this.TYPE_OF_FILE))) {
os.writeObject(hm);
} catch (IOException e) {
System.out.println("Error: " + e);
}
}
加载
public MapStandard loadFromFileMS(String nameOfFile) {
MapStandard hm = null;
InputStream inputStreaminputStream
= getClass().getClassLoader().
getResourceAsStream("data/" + nameOfFile + ".data");
try {
try (ObjectInputStream is = new ObjectInputStream(inputStreaminputStream)) {
hm = (MapStandard) is.readObject();
}
} catch (IOException | ClassNotFoundException e) {
System.out.println("Error: " + e);
}
return hm;
}
错误是:
Error: java.io.InvalidClassException: MapVerb.RealVerb; local class incompatible: stream classdesc serialVersionUID = -887510662644221872, local class serialVersionUID = 7992494764692933500
【问题讨论】:
标签: java serializable