Почему у нас есть Externalizable, когда мы можем переопределить writeObject и readObject в java

Как мы можем переопределить процесс сериализации по умолчанию, переопределив writeObject() и readObject(), тогда Какая потребность в интерфейсе Externalizable?

Ответ 1

При реализации класса Serializable может или не может изменять формат, в котором экземпляр этого класса записывается в поток.

Но реализация класса Externalizable должна реализовать writeExternal и readExternal методы, а класс - написать и восстановить данные в/из потока.

Ответ 2

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

Если вы реализуете интерфейс Serializable, все, включая состояние всех базовых классов (суперклассы), обрабатываются по умолчанию (автоматически). Сериализация.