Я работаю с ObjectOutputStream
, чтобы сохранить объект в файле .dat
. Моя проблема заключается в том, что если я ИЗМЕНИТЬ исходный код моего объекта (например, я добавляю метод ONE (getter)) входной поток не может загрузить данные и сообщить мне об ошибке Serializable
: Можно решить эту проблему? Я должен генерировать новый файл .dat
каждый раз после того, как я изменю свой исходный код.ObjectOutputStream/Input Serializable in JAVA
С помощью этого метода: (не смотрит на объект значение типа обратного) СОХРАНИТЬ
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
Какая ошибка? – gimpycpu