JavaRush /Курсы /Java Core /Задачи на сериализацию

Задачи на сериализацию

Java Core
10 уровень, 4 лекция
Открыта

— Привет, Амиго!

6
Задача
Java Core, 10 уровень, 4 лекция
Недоступна
Как сериализовать?
Как сериализовать?
6
Задача
Java Core, 10 уровень, 4 лекция
Недоступна
Как сериализовать JavaRush?
Как сериализовать JavaRush?
12
Задача
Java Core, 10 уровень, 4 лекция
Недоступна
Как сериализовать Singleton?
Как сериализовать Singleton?
6
Задача
Java Core, 10 уровень, 4 лекция
Недоступна
Как сериализовать static?
Как сериализовать static?
6
Задача
Java Core, 10 уровень, 4 лекция
Недоступна
Как сериализовать что-то свое?
Как сериализовать что-то свое?
Комментарии (226)
ЧТОБЫ ПОСМОТРЕТЬ ВСЕ КОММЕНТАРИИ ИЛИ ОСТАВИТЬ КОММЕНТАРИЙ,
ПЕРЕЙДИТЕ В ПОЛНУЮ ВЕРСИЮ
Euraks Уровень 33
30 октября 2026
com.javarush.task.task20.task2008; Почему без readResolve синглтон ломается. При readObject() объект создаётся рефлексией в обход приватного конструктора, поэтому каждая десериализация даёт новый экземпляр. Как работает readResolve. Это не метод интерфейса: Serializable пустой. ObjectInputStream находит метод по имени через рефлексию (модификатор private не мешает) и вызывает его после чтения объекта. То, что метод вернул, подменяет прочитанный объект, а сам прочитанный уходит в GC. Сигнатура должна быть точной: Object readResolve(), без параметров, тип возврата именно Object. Возвращайте getInstance(), а не ourInstance: java private Object readResolve() throws ObjectStreamException { return getInstance(); } Статические поля не сериализуются. Если десериализовать в новой JVM (после перезапуска), ourInstance будет null, и return ourInstance вернёт null вместо синглтона. В реальном коде проще enum: java public enum Singleton { INSTANCE; } сериализуется только имя константы, при чтении JVM возвращает существующий объект, readResolve не нужен; рефлексия не создаст второй экземпляр (Cannot reflectively create enum objects); создание потокобезопасно, в отличие от if (ourInstance == null). Нюанс: изменяемые поля enum не сериализуются. После десериализации вы получите константу с текущим состоянием в этой JVM, а не с тем, что было в момент записи.
TimJohnzz Уровень 23
20 октября 2026
фарм материи
Anton Zorin Уровень 32
6 августа 2026
Золотое правило сериализации в Java: если объект содержит ссылки на другие объекты, то все они тоже должны быть сериализуемыми.
Ruslan Gabzalilov Уровень 27
23 марта 2026
23.03.26 Пытаюсь найти работу в Java Backend. Прошло 3 месяца, пока безуспешно.(
XxelTaerg Уровень 30
31 июля 2026
плошло еще 4 мес. как успехи?
Ruslan Gabzalilov Уровень 27
11 августа 2026
Был перерыв на командировку. Пока никак. Ни единого собеса.
Denys Starchenko Уровень 51
24 января 2026
most stupid tasks
ТимБай Уровень 61
13 января 2026
если кто меня слышит.......
Gemini Уровень 12
24 сентября 2025
выживших все меньше и меньше)
Anonymous #3585174 Уровень 33
17 сентября 2025
Like
23 июня 2025
Чем дальше, тем меньше и меньше свежих комментариев. Ощущаю, что я вхожу в какую-то темную зону, пустошь в которой остались только самые смелые и отпетые, всё реже и реже встречаются остовы программистов, которые шли с тобой бок о бок. И отвечаешь ты на вопросы, которые задавали много лет назад и никто уже не знает, что стало с теми людьми, которые писали комменты в разделе "популярные" и что еще страшнее и дремучее "старые"
Zim4ik Уровень 1
29 июня 2025
Нужно не забывать что сейчас лето, думаю мало людей хотят учиться летом.))
DeepFryer Уровень 36
14 августа 2025
даже одиноко как-то хД
Vyacheslav Уровень 30 Expert
19 мая 2025
Если у кого тоже возник вопрос в задаче - как реализовать Singleton: когда мы десериализуем наш объект (Singleton singleton = (Singleton) ois.readObject()) то под капотом проверяется, есть ли у класса метод readResolve(), если да - то ссылаемся на него же, если нет - создаем новый объект и инициализируем поля как у нашего объекта.