Следующее предложение в том же пункте это говорит:
Классы, предназначенные для наследования (пункт 17) следует редко реализовать Serializable и интерфейсы должны редко продлить его. Нарушение этого правила ставит значительную нагрузку на всех, кто расширяет класс или реализует интерфейс. Бывают случаи, когда необходимо нарушать правило. Например, если класс или интерфейс существуют прежде всего для участия в структуре, которая требует от всех участников реализации Serializable, то для класса или интерфейса имеет смысл реализовать или расширить Serializable.
Поскольку я не хочу, чтобы Джош был на моем хвосте для нарушения авторских прав (как бы это ни было холодно), я бы не копировал весь элемент в этом ответе. Достаточно сказать, что аргументация этого объясняется в остальной части предмета.
EDIT: Джош перечисляет ряд затрат на внедрение Serializable
. Если интерфейс/суперкласс реализует его, затраты будут вынуждены пересекать расширяющиеся классы.
Основная стоимость реализации Serializable является то, что он уменьшает гибкость, чтобы изменить реализацию класса за один раз он был освобожден . ...
...
Вторая стоимость реализации Serializable является то, что он увеличивает вероятность ошибок и дыр в безопасности. ...
Третья стоимость внедрения Serializable заключается в том, что она увеличивает нагрузку на тестирование, связанную с выпуском новой версии класса.
Мое воспоминание может быть ржавым, но если я прав, Джош Блох объяснил рассуждения в том же пункте. –
@ ZiyaoWei Нет, он этого не делает. – Geek
Я предполагаю, что это означало бы, что все классы, которые являются неотъемлемыми от этого, могут быть сериализованы (что необязательно обязательно верно) –