[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"question-serializatsiya-kakoe-vliyanie-okazyvayut-na-serializuemost-modifikatory-poley-static-i-final":3},{"id":4,"slug":5,"topicId":6,"topicSlug":7,"topicName":8,"topicEmoji":9,"question":10,"answer":11,"codeLang":12,"codeSrc":12,"important":12,"commonMistakes":12,"modernUsage":12,"difficulty":13,"tags":14,"related":16,"progress":17,"seo":18},973,"kakoe-vliyanie-okazyvayut-na-serializuemost-modifikatory-poley-static-i-final",30,"serializatsiya","Сериализация","📦","Какое влияние оказывают на сериализуемость модификаторы полей static и final?","Модификаторы `static` и `final` ведут себя по-разному при стандартной сериализации (`Serializable`) и расширенной (`Externalizable`).\n\n### static-поля\n\nПоля с модификатором `static` **не сериализуются** при стандартной сериализации, так как принадлежат классу, а не экземпляру. После десериализации статическое поле будет содержать текущее значение из JVM, а не то, которое было в момент сериализации.\n\nПри использовании `Externalizable` статическое поле можно записать и прочитать вручную, но это **не рекомендуется** — это побочный эффект, влияющий на все экземпляры класса, что ведёт к трудноуловимым ошибкам.\n\n### final-поля\n\nПри стандартной сериализации `final`-поля сериализуются и десериализуются как обычные поля — JVM обходит ограничение `final` через внутренние механизмы.\n\nПри использовании `Externalizable` `final`-поля **невозможно десериализовать**: конструктор по умолчанию инициализирует их начальным значением, а изменить в `readExternal()` уже нельзя.\n\n### Сводная таблица\n\n| Модификатор | Serializable | Externalizable |\n|-------------|-------------|---------------|\n| `static` | Не сериализуется | Можно, но не рекомендуется |\n| `final` | Сериализуется нормально | Невозможно десериализовать |\n| `static final` | Не сериализуется (константа класса) | Можно записать, но бессмысленно |\n\n> **На собеседовании:** ключевое ограничение — `final`-поля нельзя восстановить через `Externalizable`, поэтому если в классе есть `final`-поля, нужно использовать `Serializable`. Это частый вопрос-ловушка.","","middle",[15],"serialization",[],null,{"title":19,"description":20,"ogTitle":19,"ogDescription":21,"keywords":22,"schemaAnswer":20,"featuredSnippetReady":23},"Какое влияние оказывают на сериализуемость модификаторы поле — Gymterview","Модификаторы `static` и `final` ведут себя по-разному при стандартной сериализации (`Serializable`) и расширенной (`Externalizable`).","Модификаторы `static` и `final` ведут себя по-разному при стандартной сериализации (`Serializable`) и расширенной (`Exte",[15,13],true]