Коллеги а кому не сложно, подскажите пожалуйста, у меня валидатор ругается по предпоследнему пункту. Но что-то я никак не могу понять что я делаю не правильно. По сути defaultReadObject восстанавливает при десериализации все поля кроме transient, я же отдельно создаю новый объект стрима и кладу его в переменную stream. Вроде все логично )))
package com.javarush.task.task20.task2022;

import java.io.*;

/*
Переопределение сериализации в потоке
*/

public class Solution implements Serializable, AutoCloseable {

    private transient FileOutputStream stream;

    public Solution(String fileName) throws FileNotFoundException {

        this.stream = new FileOutputStream(fileName);

    }

    public void writeObject(String string) throws IOException {
        stream.write(string.getBytes());
        stream.write("\n".getBytes());
        stream.flush();
    }

    private void writeObject(ObjectOutputStream out) throws IOException {
        out.defaultWriteObject();
        //out.close();
    }



    private void readObject(ObjectInputStream in) throws IOException, ClassNotFoundException {
        in.defaultReadObject();
        this.stream = new FileOutputStream("testFile",true);
        //in.close();
    }



    @Override
    public void close() throws Exception {
        System.out.println("Closing everything!");
        stream.close();
    }




    public static void main(String[] args) throws IOException, ClassNotFoundException {

        Solution sol = new Solution("testFile");

        sol.writeObject("Тестовая строка");

        ObjectOutputStream oos = new ObjectOutputStream(sol.stream);

        sol.writeObject(oos);



        FileInputStream fis = new FileInputStream("solution");
        ObjectInputStream ois = new ObjectInputStream(fis);

        Solution newSol = (Solution) ois.readObject();
//        newSol.writeObject("Еще одна строка для теста");


    }
}