Gymterview
junior

Что обозначает ключевое слово transient?

Модификатор transient указывает JVM, что помеченное поле не является частью персистентного состояния объекта и не должно сериализоваться.

Типичные сценарии использования transient:

  • Вычисляемые значения — кэшированный хэш-код, длина коллекции, производные поля, которые проще пересчитать
  • Ссылки на несериализуемые объекты — подключения к БД, потоки ввода-вывода, логгеры
  • Чувствительные данные — пароли, токены, ключи шифрования
Пример
public class Session implements Serializable {
    private String userId;
    private transient Connection dbConnection;  // нельзя сериализовать
    private transient String authToken;          // не должен покидать JVM
    private transient int requestCount;          // вычисляемое значение
}

После десериализации transient-поля получают значения по умолчанию: null для объектов, 0 для числовых типов, false для boolean. Если нужно восстановить их в корректное состояние, используйте метод readObject().

На собеседовании: назовите назначение transient, приведите пример (пароль или соединение) и упомяните, что после десериализации поле будет null/0/false.