Логотип YeaHub

База вопросов

Собеседования

Тренажёр

База ресурсов

Обучение

Навыки

Задачи

Войти

Выбери, каким будет IT завтра — вместе c нами!

YeaHub — это полностью открытый проект, призванный объединить и улучшить IT-сферу. Наш исходный код доступен для просмотра на GitHub. Дизайн проекта также открыт для ознакомления в Figma.

© 2026 YeaHub

AI info

Карта сайта

Документы

Медиа

Назад
Вопрос про Java: serialization

Какие поля нельзя сериализовать стандартным Serializable?

Вопрос проверяет понимание того, как работает стандартная сериализация и какие ограничения она накладывает на поля класса.

Короткий ответ

Стандартный механизм Serializable не сериализует поля, помеченные ключевым словом transient. Также не сериализуются поля, типы которых сами не поддерживают сериализацию. Статические поля не входят в состояние объекта и тоже не сохраняются. Если сериализуемый объект содержит несериализуемые поля, возникнет NotSerializableException. Эти ограничения важно учитывать при проектировании классов.

Длинный ответ

Определение

При стандартной сериализации Java сохраняет состояние объекта, то есть значения его нестатических полей, если они допускают сериализацию.

Поля, которые не сериализуются

Перед тем как сериализовать объект, важно понимать, какие поля будут проигнорированы.

  1. transient поля
    Поля, помеченные transient, исключаются из сериализации.

class User implements Serializable {
    private String name;
    private transient String password;
}

После десериализации:

  • name восстановится

  • password будет иметь значение по умолчанию (null)

Зачем используется transient

  • хранение временных данных

  • чувствительная информация (пароли, токены)

  • вычисляемые значения

  1. Поля несериализуемых типов
    Если поле содержит объект, который не реализует Serializable, сериализация завершится ошибкой.

class Wrapper implements Serializable {
    private Thread thread; // Thread не Serializable
}

Результат — NotSerializableException.

  1. Статические поля
    static поля:

  • принадлежат классу

  • не являются частью состояния объекта

  • не сериализуются

Вывод

Стандартная сериализация работает только с нестатическими и сериализуемыми полями. Для исключения данных используется transient.

Уровень

  • Рейтинг:

    4

  • Сложность:

    6

Навыки

  • Java

    Java

Ключевые слова

#serialization

Подпишись на Java Developer в телеграм