1) зачем сериализовать Solution, если нам нужно сериализовать только объект класса B? 2) Если не объявлен конструктор, обяъявляется конструктор по умолчанию. Не понимаю, зачем его явно объявлять здесь, если это делает джава? 3) Вычитал, что если объявить в каком-то классе именно эти методы с именно этими сигнатурами и модификатором доступа, то они вызываются самостоятельно. private void writeObject(ObjectOutputStream out) throws IOException { out.defaultWriteObject(); out.writeObject(nameA); } private void readObject(ObjectInputStream in) throws IOException, ClassNotFoundException { in.defaultReadObject(); nameA = (String) in.readObject(); } А) Но что происходит в момент их вызова? Откуда берутся потоки ObjectInputStream и ObjectOutputStream, если я их не создавал и не передавал в метод? B) Код в методах, как понял, даёт инструкцию, как именно сохранять и восстанавливать объект (что-то типа Formattera). Но как, где и когда он потом достаётся / присваивается. Или строка 19 вызывает автоматом строку 50, а 24 вызывает 55-ую и тогда получается что-то типа "кудазаписать.чтосделать(счемсделать) каксделать" или как это вообще работает?