После прочтения статьи на http://geekexplains.blogspot.com /2008/06/diff-between-externalizable-and.html, я узнал, что Externalizable лучше, чем Serializalable, поскольку он обеспечивает лучший контроль над кодом, а также быстрее. Таким образом, следует отдавать предпочтение Externalizable вместо определения класса Serializable. не изменяется, но когда я вижу в любом проекте, я использую только интерфейс Serializable. может ли это быть незнанием или Serializalable предоставляет какое-то другое преимущество, которого мне не хватает?

5
M Sach 28 Авг 2011 в 17:36

3 ответа

Лучший ответ

Преимущество Serializable в том, что он невероятно прост в реализации и устойчив к изменениям (в большинстве случаев все, что вам нужно сделать, это обновить serialversionUID). Externalizable требует, чтобы программист действительно выполнял работу и выполнял больше работы каждый раз при изменении содержимого класса. Как указано в статье, на которую вы ссылаетесь, реализация Externalizable также подвержена ошибкам. Таким образом, с точки зрения использования ограниченного времени программиста, часто лучше использовать Serializable.

Хорошая вещь о том, как разработаны Serializable и Externalizable, заключается в том, что вы можете отложить решение о реализации Externalizable до тех пор, пока не станет очевидным, что существует проблема с производительностью, и вы можете выборочно реализовать его только для тех классов, где есть проблема.

6
Nathan Hughes 4 Окт 2011 в 15:23

Serializable - это интерфейс маркера, который указывает, что экземпляры могут быть записаны в выходной поток и считаны обратно. Вам не нужно писать и кодировать (вам просто нужно убедиться, что все поля сами по себе Serializable).

Externalizable - это Serializable, который также предоставляет настраиваемый код (де) сериализации.

4
Bohemian 28 Авг 2011 в 13:45

Я узнал, что Externalizable лучше, чем Serializalable

Эта ссылка не говорит об этом. В этой ситуации нет ничего «лучше», это лошади для курсов. Если вы готовы писать намного больше кода на протяжении всего времени существования проекта, Externalizable может быть «лучше» в некоторых смыслах, например пространственные и временные затраты. Если стоимость кода вызывает беспокойство, Serializable намного «лучше». И это не единственные альтернативы.

2
user207421 29 Авг 2011 в 10:45