Если вы посмотрите на исходный код класса Hashtable (по крайней мере, в 1.6), Entry[] table
помечается как transient
, но класс реализует writeObject()
, в котором записывает содержимое таблицы ввода ObjectOutputStream
.
Таким образом, содержимое Hashtable всегда сериализуется.
Почему они решили реализовать это таким образом? Вероятно, иметь контроль над тем, как массив сериализуется.