Почему 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. **

Другие вопросы по тегам