Gymterview
middle

Когда стоит изменять значение поля serialVersionUID?

serialVersionUID следует изменять только при внесении несовместимых изменений в класс — таких, после которых старые сериализованные данные не могут корректно восстановиться.

Несовместимые изменения (нужно менять serialVersionUID)

  • Удаление поля
  • Изменение типа поля (например, int -> long)
  • Перемещение класса в другой пакет
  • Изменение класса с Serializable на Externalizable или наоборот
  • Удаление реализации Serializable

Совместимые изменения (НЕ нужно менять serialVersionUID)

  • Добавление нового поля (при десериализации старых данных оно получит значение по умолчанию)
  • Добавление/удаление методов
  • Изменение модификаторов доступа поля
  • Изменение поля из static в нестатическое или из transient в нетранзитное

На собеседовании: покажите, что понимаете разницу между совместимыми и несовместимыми изменениями. Главный критерий — если старые данные можно корректно загрузить в новую версию класса, serialVersionUID менять не нужно.