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

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

Открыта

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

Допустим наш класс содержит ссылку на какой-нибудь 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, 13:43
Вот это лекция так лекция😬
Руслан
Уровень 114
Expert
22 апреля 2025, 05:28
Модификатор transient не стоило выделять в отдельную лекцию)
Владимир Кругман
Уровень 51
Expert
21 декабря 2023, 15:24
Вот это я понимаю лекция на полстранички
Глеб
Уровень 108
Expert
23 января 2023, 18:48
Виталий
Уровень 2
Expert
17 августа 2023, 13:09
Чего ждешь?
Тимур
Уровень 111
25 сентября 2024, 15:40
Продолжения))