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

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

Открыта

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

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 Backend Developer
30 октября, 16:11
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 октября, 09:25
фарм материи
Anton Zorin
Уровень 32
6 августа, 13:08
Золотое правило сериализации в Java: если объект содержит ссылки на другие объекты, то все они тоже должны быть сериализуемыми.
Ruslan Gabzalilov
Уровень 27
23 марта, 05:44
23.03.26 Пытаюсь найти работу в Java Backend. Прошло 3 месяца, пока безуспешно.(
XxelTaerg
Уровень 30
31 июля, 06:59
плошло еще 4 мес. как успехи?
Ruslan Gabzalilov
Уровень 27
11 августа, 04:14
Был перерыв на командировку. Пока никак. Ни единого собеса.
Denys Starchenko
Уровень 51
24 января, 18:16
most stupid tasks
ТимБай
Уровень 61
13 января, 03:35
если кто меня слышит.......
Gemini
Уровень 12
24 сентября 2025, 02:30
выживших все меньше и меньше)
Anonymous #3585174
Уровень 33
17 сентября 2025, 10:28
Like
23 июня 2025, 11:33
Чем дальше, тем меньше и меньше свежих комментариев. Ощущаю, что я вхожу в какую-то темную зону, пустошь в которой остались только самые смелые и отпетые, всё реже и реже встречаются остовы программистов, которые шли с тобой бок о бок. И отвечаешь ты на вопросы, которые задавали много лет назад и никто уже не знает, что стало с теми людьми, которые писали комменты в разделе "популярные" и что еще страшнее и дремучее "старые"
Zim4ik
Уровень 1
29 июня 2025, 08:29
Нужно не забывать что сейчас лето, думаю мало людей хотят учиться летом.))
ты да я да мы с тобой 😨
DeepFryer
Уровень 36
14 августа 2025, 20:57
даже одиноко как-то хД
Vyacheslav
Уровень 30
Expert
19 мая 2025, 21:07
Если у кого тоже возник вопрос в задаче - как реализовать Singleton: когда мы десериализуем наш объект (Singleton singleton = (Singleton) ois.readObject()) то под капотом проверяется, есть ли у класса метод readResolve(), если да - то ссылаемся на него же, если нет - создаем новый объект и инициализируем поля как у нашего объекта.