Разные SUID на разные классы

Предполагая, что у меня есть совершенно разные классы с разными именами классов. Должен ли я использовать разные serialVersionUID в классах?

Если так, зачем это нужно?

Как именно в JRE происходит десериализация?

1 ответ

Решение

Нет, вам не нужны разные SUID (все классы могут использовать 1 для него)

когда объект сериализуется, идентификатор класса (package.name.ClassName) и SUID являются частью заголовка, чтобы идентифицировать класс, к которому принадлежит объект, и гарантировать отсутствие несовместимости между стороной записи и стороной чтения

но когда вы изменяете класс структурно (добавляете / удаляете поле), вы должны установить новый SUID для этого класса (во время отладки вы можете позволить JVM создать новый во время выполнения на основе файла.class)

Другие вопросы по тегам