Есть ли способ отключить кеширование сериализованного объекта в Java?Отключить кеширование сериализации
У меня есть такой сценарий:
- У меня есть объект, который Сериализуемый, я сериализации, десериализации его значения в порядке.
- На том же объекте я меняю какое-то значение, я его сериализую, десериализую его, значения НЕ ОК, значения такие же, как и первоначально загруженные.
Похоже, что сериализатор кэширует значения, или нет?
Благодаря
скопировал этот пример из "Фредрик" и принял к моему делу:
public class SerialDeserial {
public static void main(String[] args) {
try {
ChangingObject obj = new ChangingObject();
obj.foo=1;
// Write it
ObjectOutputStream os = new ObjectOutputStream(new FileOutputStream("test.foo"));
os.writeObject(obj);
os.flush();os.close();
// Read the object
ObjectInputStream is = new ObjectInputStream(new FileInputStream("test.foo"));
ChangingObject objDummy = (ChangingObject)is.readObject();
System.out.println("objDummy.foo is "+objDummy.foo);
// Change it
obj.foo=2;
// Write it
os = new ObjectOutputStream(new FileOutputStream("test.foo"));
os.writeObject(obj);
os.flush();os.close();
// Read the object
is = new ObjectInputStream(new FileInputStream("test.foo"));
objDummy = (ChangingObject)is.readObject();
System.out.println("objDummy.foo is "+objDummy.foo); // this returns "1" insted of "2"
} catch (Exception e) {
e.printStackTrace();
}
}
}
class ChangingObject implements Serializable {
public int foo;
}
Согласитесь, но он говорит, что получает ошибку даже с исходным источником образца, а затем это новый поток, и он не должен иметь никакого состояния. – Fredrik
Возможно, вы слишком буквальны, хотя я не знаю, была ли ошибка в выходной или входной стороне вещей. –