JavaRush /Курсы /Модуль 2. Java Core /Модификатор transient

Модификатор transient

Модуль 2. Java Core
16 уровень , 1 лекция
Открыта

— Привет, Амиго! Хотела тебе порассказывать одно маленькое дополнение к сериализации.

Допустим наш класс содержит ссылку на какой-нибудь InputStream, тогда его нельзя сериализовать, ведь так?

— Да. Ты же сама говорила, что потоки сериализовать нельзя. А сериализовать объект, у которого есть несериализуемые данные – тоже нельзя.

— Да. Именно так. Но что, если класс хранит данные, которые не играют значащей роли в его состоянии, но мешают считаться ему сериализуемым классом? Мало ли что класс может у себя хранить ненужного. Возможно, он может выбросить эти данные в любой момент или даже так и делает постоянно.

Для таких случаев разработчики Java придумали специальное слово – transient. Его можно написать перед переменной класса и она не будет учитываться при сериализации. Ее состояние не будет ни сохраняться, ни восстанавливаться. Как будто и нет ее вовсе. Как раз для таких ситуаций, как мы только что рассмотрели.

Помнишь кеширование и модификатор volatileНет правил без исключений.

Вот тебе один примерчик такого счастья:

Пример «кота» с невидимой для сериализации переменной — in:

Код
class Cat implements Serializable
{
 public String name;
 public int age;
 public int weight;

 transient public InputStream in = System.in; 
}
Комментарии (6)
ЧТОБЫ ПОСМОТРЕТЬ ВСЕ КОММЕНТАРИИ ИЛИ ОСТАВИТЬ КОММЕНТАРИЙ,
ПЕРЕЙДИТЕ В ПОЛНУЮ ВЕРСИЮ
19 октября 2025
Вот это лекция так лекция😬
Руслан Уровень 111 Expert
22 апреля 2025
Модификатор transient не стоило выделять в отдельную лекцию)
Владимир Кругман Уровень 51 Expert
21 декабря 2023
Вот это я понимаю лекция на полстранички
Глеб Уровень 108 Expert
23 января 2023
Виталий Уровень 107 Expert
17 августа 2023
Чего ждешь?
Тимур Уровень 109
25 сентября 2024
Продолжения))