В нем говорилось, что механизм сериализации Java по умолчанию не очень эффективен, потому что: a) он обнаруживает, какие поля записывать/читать через отражение, которое обычно медленное; b) он записывает дополнительные данные в поток.
Один из способов сделать его более эффективным - реализовать Externalizable и его методы writeExternal/readExternal.
Здесь вопрос: если я вместо этого предоставляю методы writeObject/readObject и не вызываю в них deafiltWriteObject/defaultReadObject, тогда этот механизм не будет использовать отражение, чтобы выяснить, какие поля писать/читать, а также выиграть ' t записать дополнительные данные в поток (или это будет неточно). Итак, с точки зрения эффективности, реализует writeObject/readObject, упомянутый выше, как при реализации Externalizable? Или последний вариант дает некоторые практические преимущества, которые первый не делает?
EDIT: различие, конечно, заключается в том, что класс Serializable, реализующий readObject/writeObject, подклассифицирован, и если подкласс имеет свой собственный объект readObject/writeObject, им не нужно вызывать super readObject/writeObject. Не так, если супер/подкласс вместо этого реализует Externalizable. В этом случае необходимо явно вызвать функцию super writeExternal/readExternal. Однако это различие не имеет значения с точки зрения эффективности.