Как мы можем переопределить процесс сериализации по умолчанию, переопределив writeObject() и readObject(), тогда Какая потребность в интерфейсе Externalizable?
Почему у нас есть Externalizable, когда мы можем переопределить writeObject и readObject в java
Ответ 1
При реализации класса Serializable
может или не может изменять формат, в котором экземпляр этого класса записывается в поток.
Но реализация класса Externalizable
должна реализовать writeExternal
и readExternal
методы, а класс - написать и восстановить данные в/из потока.
Ответ 2
Интерфейс Serializable реализуется для получения функциональности автоматической сериализации, но , если вы хотите предоставить свою собственную логику сериализации (пользовательскую логику), вы будете использовать интерфейсы Externalizable. Интерфейс Externalizable содержит два метода, которые вы должны реализовать: readExternal() и writeExternal().
Если вы реализуете интерфейс Serializable, все, включая состояние всех базовых классов (суперклассы), обрабатываются по умолчанию (автоматически). Сериализация.