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.