Ответ 1
Внедрить метод readObject()
:
private void readObject(java.io.ObjectInputStream in)
throws IOException, ClassNotFoundException {
in.defaultReadObject();
myTransient = ...;
}
Из javadoc:
Классы, требующие специальной обработки во время процесса сериализации и десериализации, должны реализовывать специальные методы с этими точными сигнатурами:
private void readObject (java.io.ObjectInputStream in) бросает IOException, ClassNotFoundException;
Метод readObject отвечает за чтение из потока и восстановление полей классов. Он может вызвать in.defaultReadObject для вызова механизма по умолчанию для восстановления нестатических и непереходных полей объекта. Метод defaultReadObject использует информацию в потоке для назначения полей объекта, сохраненного в потоке, с соответствующими именами в текущем объекте. Это обрабатывает случай, когда класс развился, чтобы добавить новые поля. Этот метод не должен касаться состояния, принадлежащего его суперклассам или подклассам. Состояние сохраняется путем записи отдельных полей в ObjectOutputStream с использованием метода writeObject или с использованием методов для примитивных типов данных, поддерживаемых DataOutput.
См. также: