изменение сериализуемого класса путем добавления статических методов, Java - PullRequest
0 голосов
/ 24 марта 2012

Мой сериализуемый класс не читается с objectinputstream после добавления статических методов в класс, это ожидаемое поведение?Где в javadoc говорится, что добавление статических методов в сериализуемый класс создает несовместимость?

1 Ответ

4 голосов
/ 24 марта 2012

В Спецификации Сериализации Объекта Java, раздел 4.6 :

Уникальный идентификатор потока представляет собой 64-битный хэш имени класса, имен классов интерфейса, методов и полей.

...

Для каждого не закрытого метода, отсортированного по имени и сигнатуре метода:

  • Название метода.
  • Модификаторы метода, записанные в виде 32-разрядного целого числа.
  • Дескриптор метода.

Нет, я не могу понять, как это может фактически нарушить совместимость сериализованного состояния, но именно поэтому стоит либо , чтобы избежать двоичной сериализации Java по умолчанию (например, для Protocol Buffers ) или , всегда объявляя serialVersionUid самостоятельно.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...