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