Разные SUID на разные классы
Предполагая, что у меня есть совершенно разные классы с разными именами классов. Должен ли я использовать разные serialVersionUID
в классах?
Если так, зачем это нужно?
Как именно в JRE происходит десериализация?
1 ответ
Решение
Нет, вам не нужны разные SUID (все классы могут использовать 1 для него)
когда объект сериализуется, идентификатор класса (package.name.ClassName) и SUID являются частью заголовка, чтобы идентифицировать класс, к которому принадлежит объект, и гарантировать отсутствие несовместимости между стороной записи и стороной чтения
но когда вы изменяете класс структурно (добавляете / удаляете поле), вы должны установить новый SUID для этого класса (во время отладки вы можете позволить JVM создать новый во время выполнения на основе файла.class)