[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"question-serializatsiya-kakaya-rol-polya-serialversionuid-v-serializatsii":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},976,"kakaya-rol-polya-serialversionuid-v-serializatsii",30,"serializatsiya","Сериализация","📦","Какая роль поля serialVersionUID в сериализации?","`serialVersionUID` — это уникальный идентификатор версии класса, который используется при десериализации для проверки совместимости сериализованных данных с текущей версией класса.\n\n```java\nprivate static final long serialVersionUID = 20161013L;\n```\n\n### Как работает\n\nПри сериализации JVM записывает `serialVersionUID` класса в поток. При десериализации сравнивает `serialVersionUID` из потока с `serialVersionUID` текущего класса. Если значения не совпадают, выбрасывается `InvalidClassException`.\n\n### Почему нужно объявлять явно\n\nЕсли `serialVersionUID` не объявлен, JVM генерирует его автоматически на основе метаданных класса: имени, полей, модификаторов, реализованных интерфейсов. Любое изменение класса (добавление метода, поля, изменение модификатора) приводит к изменению автоматически сгенерированного `serialVersionUID`, и ранее сериализованные данные становятся несовместимыми.\n\n### Правила формирования\n\n| Подход | Пример | Когда использовать |\n|--------|--------|-------------------|\n| Фиксированное число | `serialVersionUID = 1L` | Простые случаи, начало разработки |\n| Дата\u002Fверсия | `serialVersionUID = 20261013L` | Когда важна история изменений |\n| Автогенерация IDE | `serialVersionUID = -812739472847L` | Когда IDE генерирует по структуре класса |\n\n### Частые ошибки\n\n- Не объявлять `serialVersionUID` явно — при любом рефакторинге класса старые данные перестанут читаться\n- Менять `serialVersionUID` при совместимых изменениях — это сломает обратную совместимость без необходимости\n- Одинаковый `serialVersionUID` у разных классов — не проблема, так как проверка учитывает и имя класса\n\n> **На собеседовании:** объясните назначение поля, почему его нужно объявлять явно, и когда его следует менять. Достаточно одного предложения: «Без явного `serialVersionUID` JVM генерирует его автоматически, и любое изменение класса ломает обратную совместимость.»","","junior",[15],"serialization",[],null,{"title":19,"description":20,"ogTitle":19,"ogDescription":21,"keywords":22,"schemaAnswer":23,"featuredSnippetReady":24},"Какая роль поля serialVersionUID в сериализации? — Gymterview","`serialVersionUID` — это уникальный идентификатор версии класса, который используется при десериализации для проверки совместимости сериализованных данных с тек","`serialVersionUID` — это уникальный идентификатор версии класса, который используется при десериализации для проверки со",[15,13],"`serialVersionUID` — это уникальный идентификатор версии класса, который используется при десериализации для проверки совместимости сериализованных данных с текущей версией класса.",true]