Выделяемый или сериализуемый?
Прочитав статью на http://geekexplains.blogspot.com/2008/06/diff-between-externalizable-and.html, я узнал, что Externalizable лучше, чем Serializalable, поскольку он обеспечивает лучший контроль над кодом, а также быстрее. Поэтому Externalizable должен быть предпочтен вместо Serializable при условии, что определение класса не изменено. Но когда я вижу в любом проекте, я нахожу, используя только Serializable интерфейс. может ли это быть невежество или Serializalable обеспечивает какое-то другое преимущество, которое мне не хватает?
3 ответа
Преимущество Serializable в том, что он невероятно прост в реализации и устойчив к изменениям (в большинстве случаев все, что вам нужно сделать, это обновить serialversionUID). Externalizable требует, чтобы программист фактически выполнял работу и выполнял больше работы каждый раз, когда изменяется содержание класса. В статье, на которую вы ссылаетесь, реализация Externalizable также подвержена ошибкам. Таким образом, с точки зрения использования ограниченного времени программиста, часто Serializable является лучшим выбором.
Хорошая вещь о том, как создаются Serializable и Externalizable, заключается в том, что вы можете отложить решение о реализации Externalizable до тех пор, пока не станет очевидно, что существует проблема с производительностью, и вы можете выборочно реализовать ее только для тех классов, где есть проблема.
Serializable
интерфейс маркера, который указывает, что экземпляры могут быть записаны в выходной поток и считаны обратно. Вам не нужно писать и кодировать (вы просто должны убедиться, что все поля сами Serializable
).
Externalizable
это Serializable
что alos предоставляет пользовательский (де) код сериализации.
Я узнал, что Externalizable лучше, чем Serializalable
Эта ссылка не говорит этого. В этой ситуации нет "лучше", это лошади для курсов. Если вы готовы писать намного больше кода, постоянно в течение всего жизненного цикла проекта, Externalizable может быть "лучше" в некоторых смыслах, например, в отношении затрат времени и пространства. Если стоимость кода вызывает беспокойство, Serializable намного лучше. И это не единственные альтернативы.