middle
Когда стоит изменять значение поля serialVersionUID?
serialVersionUID следует изменять только при внесении несовместимых изменений в класс — таких, после которых старые сериализованные данные не могут корректно восстановиться.
Несовместимые изменения (нужно менять serialVersionUID)
- Удаление поля
- Изменение типа поля (например,
int->long) - Перемещение класса в другой пакет
- Изменение класса с
SerializableнаExternalizableили наоборот - Удаление реализации
Serializable
Совместимые изменения (НЕ нужно менять serialVersionUID)
- Добавление нового поля (при десериализации старых данных оно получит значение по умолчанию)
- Добавление/удаление методов
- Изменение модификаторов доступа поля
- Изменение поля из
staticв нестатическое или изtransientв нетранзитное
На собеседовании: покажите, что понимаете разницу между совместимыми и несовместимыми изменениями. Главный критерий — если старые данные можно корректно загрузить в новую версию класса,
serialVersionUIDменять не нужно.