Получить доступ

Чем Externalizable отличается от Serializable?

MiddleСериализация
Коротко

Externalizable — полный ручной контроль: формат пишут writeExternal и readExternal, нужен публичный конструктор без аргументов (вызывается при восстановлении). Serializable — маркер, всё делает механизм через рефлексию.

  • Компактнее и быстрее, но поддерживать вручную синхронно с классом
  • Поля родителя тоже записывать самим
  • Поля не могут быть final — заполняются после конструктора

А ещё На практике почти не используют — берут внешние форматы

Так подсказку видит пользователь sotto на живом собеседовании — за пару секунд, пока вы думаете вслух.

Подробно

Serializable — маркерный интерфейс, за который всю работу делает механизм рефлексии. Externalizable отдаёт управление вам: формат определяете сами, поэтому он бывает компактнее и быстрее. Цена высока: логику сериализации приходится поддерживать вручную и синхронно с изменениями класса, наследуемые поля тоже становятся вашей заботой, а нужен ещё и публичный конструктор без аргументов — при десериализации вызывается именно он, после чего объект наполняется в readExternal. На практике оба подхода сегодня вытесняются внешними форматами вроде Protobuf, где схема отделена от классов.

Что хотят услышать

  • Различие и цена ручного контроля.

Частые ошибки

  • Забыть про публичный конструктор без аргументов.
  • Не учесть поля суперкласса при ручной реализации.

Проверьте себя

Один верный вариант. Подумайте, потом откройте ответ.

Показать варианты и ответ
  • ✓Externalizable требует самостоятельно записать и прочитать состояние и вызывает публичный конструктор без аргументов при восстановлении
  • ✗Externalizable — это маркерный интерфейс без методов
  • ✗Externalizable автоматически шифрует сериализованные данные
  • ✗Externalizable работает только с примитивными полями

Что спросят дальше

  • Почему при Externalizable конструктор всё-таки вызывается?
  • Когда ручной контроль формата действительно оправдан?

Разбор темы

Связанные вопросы

Закрытая бета

Подсказки на собеседовании — в реальном времени

sotto слышит вопрос интервьюера и показывает короткий ответ и план, как в блоке «Коротко». Оставьте контакт — пришлём доступ и промокод.

  • Промокод на 2 часа — сверх пробных 30 минут
  • Программа для Windows — скачать сразу, войти — через Яндекс ID или VK ID
  • Прямая связь с разработчиком: что улучшить — сделаем