(1) Методы не объявлены ни в одном классе или интерфейсе. Класс, который реализует интерфейс Serializable
и требует специальной специальной обработки в процессе сериализации и десериализации, должен реализовывать эти методы, и сериализатор / десериализатор попытается отразить эти методы.
Это один из довольно странных углов в Java, где API фактически определен в javaDoc ... Но если методы были определены в интерфейсе, то они имели быть public
(мы не можем реализовать метод интерфейса, заблокировать его, добавив модификатор private
).
Почему личное - javaDoc не дает подсказки. Возможно, они определены как частные, потому что никакой другой класс, кроме разработчика, не предназначен для их использования. Они частные по определению .
(2) В примере просто показано, как работает специальная обработка. В этом примере size
является временным и не будет сериализован. Но теперь мы представляем специальный обработчик, и этот обработчик добавляет значение size
в поток. Отличие от обычного подхода с нестационарными полями может заключаться в порядке элементов в результирующем потоке (если это имеет значение ...).
Пример мог бы иметь смысл, если бы переходное поле было определено в суперклассе, а подкласс хотел сериализовать значение.