java Сериализация

307
16 января 2017, 19:47

Добрый день. Изучаем сериализацию. В данном случае, надо поставить запрет сериализации. Так вот, почему если поставить у SubSolution.writeObject модификатор доступа public, то сериализация пройдет ? Что-то не могу понять. Буду благодарен за ссылку на похожий вопрос или статью/литературу.

public class TestFile implements Serializable {
    public static void main(String args[]) throws Exception
    {
        FileOutputStream fileOutput = new FileOutputStream("FilePath");
        ObjectOutputStream outputStream = new ObjectOutputStream(fileOutput);
        SubSolution subSolution = new SubSolution();
        outputStream.writeObject(subSolution);
        fileOutput.close();
        outputStream.close();
    }
    public static class SubSolution extends TestFile {
        private void writeObject(ObjectOutputStream objectOutput) throws Exception {
            throw new NotSerializableException();
        }
        private  void readObject(ObjectInputStream objectInput) throws Exception {
            throw new NotSerializableException();
        }
    }
}
Answer 1

В документации на Serializable написано:

Классы, требующие специальной обработки в процессе сериализации и десериализации должны реализовывать специальные методы с в точности такими сигнатурами:

 private void writeObject(java.io.ObjectOutputStream out)
     throws IOException
 private void readObject(java.io.ObjectInputStream in)
     throws IOException, ClassNotFoundException;
 private void readObjectNoData()
     throws ObjectStreamException;

Данные методы вызываются через reflection, соответствующие объекты Method заполняются с учетом требований выше. При замене private на public метод не считается подходящим и игнорируется.

READ ALSO
Как прочитать файл, [дубликат]

Как прочитать файл, [дубликат]

На данный вопрос уже ответили:

292
Android. View элементы меняют дефолтный стиль в зависимости от типа Activity. Как установить единый стиль?

Android. View элементы меняют дефолтный стиль в зависимости от типа Activity. Как установить единый стиль?

Заметил что при создании различных типов Activity при создании приложения, к ним прикручиваются разные стили для чекбоксов и спиннеров, при создании...

261