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

Проработать

  1. Знакомство с интерфейсом Externalizable
  2. Advanced Java - Serialization
  3. Introduction to Java Serialization
  4. Сериализация
  5. Сериализация как она есть. Часть 1
  6. Сериализация и десериализация в Java
  7. Сериализация как она есть
  8. How to convert byte[] array to String in Java
  9. Сериализация в Java

Что это

Сериализация — это процесс сохранения состояния объекта в последовательность байт. Десериализация — это процесс восстановления объекта из этих байт. JSON и XML - самые популярные текстовые форматы для сериализации.

@Serializable - интерфейс-маркер который мы должны имплементировать для сериализации объекта.

transient - ключевое слово используется на полях которые мы не хотим сериализировать/десериализировать(null).

long serialVersionUID - long переменная необходимая для указания версии нашего класса. Она задается автоматически(не рекомендуется) или вручную. Пример мы сделали сериализацию, изменили класс и делаем десереализацию в уже измененный класс - нам вернется исключение java.io.InvalidClassException. Необходимо при изменениях класса не забываем перегенерировать с помощью ide версию класса.

Чтобы не получить ошибку при сериализации все внутренние зависимости объекта должны быть:

  1. Сериализуемыми тк. они тоже сериализуются
  2. Помечены как transient

Externalizable

Externalizable - наследуется из Serializable и означает ручную настройку сериализация с копированием transient и статических объектов и при правильной настройке оптимизирует сериализацию. Можно без слова transient сериализировать только необходимое.