Я смотрел на источник HashMap.Почему хэш-таблица HashMap отмечена как переходная, хотя класс сериализуем
A HashMap
implements Serializable
.
Хорошо, это так, что оно может быть перемещено/передано как объект.
Но я вижу, что сама хэш-таблица отмечена как transient
.
Я не понимаю этого. Если вы отметите его как переходный, разве это не значит, что он должен не быть сериализован?
Но все данные в таблице. Поэтому почему это transient
?
Возможно, я смущен тем, как работает Serializable
?
Я вижу эти методы. Мне было интересно, почему это так? Есть ли причина? – Cratylus
Хэш-код объектов может меняться между прогонами программы - например, если hashCode() использует реализацию Object по умолчанию, поэтому хеш-таблицу необходимо перестроить во время десериализации. –