Настройка возможна с сериализацией, тогда почему 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 оставляет всю работу до вас.