Задать вопрос
@artemfisher

Приведите пример использования readObjectNoData() при десериализации?

Добрый день!
По документации все понятно. Но никак не могу заставить данный метод срабатывать.
Приведите, пожалуйста, пример ситуации (код) когда метод сработает.
  • Вопрос задан
  • 56 просмотров
Подписаться 1 Простой 2 комментария
Пригласить эксперта
Ответы на вопрос 1
@Mercury13
Программист на «си с крестами» и не только
Так просто, одним куском кода, это сделать нельзя. readObjectNoData() работает только на враждебных данных, которые ещё надо ухитриться сфабриковать.

// Пишет вот такой код
class A implements Serializable { }
class B extends A {}


// А читает вот такой
class A implements Serializable { }
class AHalf extends A {
  private void readObjectNoData() throws ObjectStreamException {}
}
class B extends AHalf {}


Если записать объект класса B первым кодом и прочитать вторым, должно сработать.

Смысл readObjectNoData() — привести объект в подходящее состояние, когда 1) данных по промежуточному классу AHalf нет; 2) у него какие-то нехорошие инварианты, что так просто в свежеинициализированном состоянии он негодный: ну, к примеру, конструктор по умолчанию скрыт и служит только для десериализации, а так он просит объект для своего создания.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы