Друзья, добрый вечер!
Задачу решил, но не раборался :) Несколько вопросов, буду признателен за ответы.
1. Почему мы вызываем writeObject не у самого объекта Solution, а у отдельно созданного потока? Почему нельзя вызвать solution.writeObject(new objectOutputStream(...))?
2. Почему потоки нельзя закрывать в методах readObject и writeObject? Они же больше не нужны после сериализации или десереализации?
3. Зачем нужен метод defaultWriteObject?
Буду признателен за информативные ссылки, но заметил, что вот именно эта тема очень плхо раскрыта в материалах в интернете.
Yaroslav
29 уровень
Все работает, но вопросы остались. Помогите розбраться, пжл
Обсуждается
Комментарии (1)
- популярные
- новые
- старые
Для того, чтобы оставить комментарий Вы должны авторизоваться
hidden #2322530
17 октября 2020, 15:34
приложи код, потому что по некоторым вопросам есть нестыковки, например у меня лично по решению.
2. Почему потоки нельзя закрывать в методах readObject и writeObject? Они же больше не нужны после сериализации или десереализации?
потому что эти потоки были открыты не внутри метода, а вне его. то и закрывать они не имеют права. а вдруг этот поток потом передадут в другой метод ещё, а он уже будет закрыт? потоки надо закрывать там, где их открыли.
это равноценно, что например:
тебе дали для записи данных флешку попользоваться, ты ей попользовался и выбросил. а она как бы не твоя, и надо вернуть. вот примерно и тут так же. это поток не твой. тебе им дали попользоваться. будь добр вернуть обратно его.
+3