Обложка канала

Java

15122 @javazavr

Главный канал по Java.

Java

4 года назад
Открыть в
#вопросы_с_собеседований Опишите процесс сериализации/десериализации с использованием Serializable. При использовании Serializable применяется алгоритм сериализации, который с помощью рефлексии (Reflection API) выполняет: • запись в поток метаданных о классе, ассоциированном с объектом (имя класса, идентификатор SerialVersionUID, идентификаторы полей класса); • рекурсивную запись в поток описания суперклассов до класса java.lang.Object (не включительно); • запись примитивных значений полей сериализуемого экземпляра, начиная с полей самого верхнего суперкласса; • рекурсивную запись объектов, которые являются полями сериализуемого объекта. При этом ранее сериализованные объекты повторно не сериализуются, что позволяет алгоритму корректно работать с циклическими ссылками. Для выполнения десериализации под объект выделяется память, после чего его поля заполняются значениями из потока. Конструктор объекта при этом не вызывается. Однако при десериализации будет вызван конструктор без параметров родительского несериализуемого класса, а его отсутствие повлечёт ошибку десериализации.