Краткие правила могут быть следующими:
1. Переменная static
не сохраняется во время сериализации. И наоборот, в процессе десериализации переменные static
инициируются из инициализации уровня класса.
2. Переменные на основе ключевых слов static
и transient
игнорируются во время сериализации.
3. Имя класса и serialVersionUID
оба сериализуются как поток байтов, а при десериализации serialVersionUID
, считываемый из источника, сравнивается с локальной переменной того же класса static
. Вот почему serialVersionUID
объявлен как static public final
, так что больше нет необходимости создавать какой-либо объект для сравнения этих versionUID.
- Если в случае обнаружения каких-либо различий, InvalidClassException
будет происходить.