Настройка возможна с сериализацией, тогда почему Externalizable вообще?

Я прочитал эти статьи на SO:

Выделяемый или сериализуемый?,

В чем разница между Serializable и Externalizable в Java?,

но мой вопрос в том, какие дополнительные настройки могут быть получены путем реализации Externalizable по сравнению с serializable,

Можно настроить Serialization из class который реализует Serializable давая нашу собственную реализацию writeObject а также readObject, Тогда какова цель использования Externalizable и настраивая ReadExternal а также writeExternal Реализации. Какова реальная выгода использования Externalizable, Я прочитал различные ссылки, которые говорят Externalizable поддерживает пользовательские serialization (включая тот, что выше). но я не вижу примера, где Externalizable явный победитель или что-то, что не может быть сделано с помощью Serializable, было бы неплохо увидеть пример по этому.

Просто для большей ясности отсюда взят следующий фрагмент:

Когда class инвентарь Serializable interface это дает информацию JVM что instances из этих classes можно сериализовать. Наряду с этим, есть особое примечание к JVM

"ищите следующие два метода в классе, который реализует Serializable. Если найдено, вызовите это и продолжите процесс сериализации, иначе непосредственно следуйте стандартному протоколу сериализации"

Так что это дает нам возможность написать эти два метода:

private void writeObject(ObjectOutputStream out) throws IOException;, private void readObject(ObjectInputStream in) throws IOException, ClassNotFoundException;

внутри Class который реализует Serializable и вы получите крюк к serialization процесс. Вы можете написать свой собственный код внутри этих двух методов и настроить стандартное поведение serialization,

1 ответ

Основное различие между Serializable и Externalizable заключается в том, что Serializable автоматически позаботится о базовых классах для вас. Externalizable оставляет всю работу до вас.

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