Разница между интерфейсами Serializable и Externalizable в Java заключается в уровне контроля над сериализацией объектов. 3
Serializable — маркерный интерфейс, который не требует реализации каких-либо методов. 3 Он просто указывает виртуальной машине Java (JVM), что объект можно сериализовать. 34 При использовании Serializable применяется стандартный алгоритм сериализации, конструктор объекта не вызывается. 12
Externalizable предоставляет больший контроль над сериализацией, позволяя разработчикам явно определить, какие данные сохранять и как их восстанавливать. 3 При реализации интерфейса Externalizable вызывается пользовательская логика сериализации. 2 Способ сериализации и десериализации описывается в методах writeExternal и readExternal. 2 Во время десериализации вызывается конструктор без параметров, а потом уже на созданном объекте вызывается метод readExternal. 2
Таким образом, Serializable подходит для автоматической сериализации, а Externalizable — для сериализации с возможностью настройки процесса (например, при работе с определённым форматом файла). 4