Почему Externalizable, когда метод read/writeObject есть в сериализуемом
Я не могу избавиться от этой путаницы,
Используется Externalizable, потому что мы можем предоставить собственную (более эффективную) реализацию сериализации-десериализации с использованием метода read/writeExternal. И контролировать процесс сериализации.
Мы также можем использовать метод read/writeObject, и процесс сериализации будет переопределен этим.
Тогда почему Externalizable даже требуется?
Почему кто-то предпочитает read/writeExternal вместо read/writeObject?
1 ответ
Просто настройка в случае сериализации.
Причина указана в документах Externalizable.
Методы writeExternal и readExternal интерфейса Externalizable реализуются классом, чтобы предоставить классу полный контроль над форматом и содержимым потока для объекта и его супертипов. Эти методы должны явно координироваться с супертипом, чтобы сохранить его состояние. Эти методы заменяют пользовательские реализации методов writeObject и readObject. Сериализация объектов использует интерфейсы Serializable и Externalizable. Механизмы сохранения объектов также могут их использовать. Каждый сохраняемый объект тестируется на интерфейс Externalizable. Если объект поддерживает Externalizable, вызывается метод writeExternal. Если объект не поддерживает Externalizable и реализует Serializable, объект сохраняется с помощью ObjectOutputStream. **