Этот вопрос касается ObjectInputStream и того, как он создает поля, объявленные как переходные. Учитывая простой потребительной случай ObjectInputStreamСериализация через ObjectInputStream и переходные поля
FileInputStream fis = new FileInputStream("t.tmp");
ObjectInputStream ois = new ObjectInputStream(fis);
SomeClass sc = (SomeClass) ois.readObject();
Где SomeClass является
class SomeClass {
int x;
transient OtherClass y;
}
class OtherClass {
int z;
}
, что будет значение sc.y после ois.readObject?
Я прошу уточнить, что я прочитал в docs.oracle.com, которая гласит
«Поля объявлено как переходные или статические игнорируются в процессе десериализации. Ссылки на другие объекты вызывают те объекты, которые будут считаны из потока по мере необходимости. "
Что означает, что переходные поля игнорируются? И как они могут быть считаны из потока, если они являются переходными (т.е. не сериализованная - как я понимаю ...)
Матфия
Спасибо Но не стесняйтесь отвечать на мои другие два вопроса :-) Может быть, вы также можете оправдать свой ответ? – Matthias
Благодарим вас за ответ. Надеюсь, вы видите, как вы отвечаете, не соответствует официальной документации от oracle, где они заявляют, что «эти объекты читаются из потока по мере необходимости». Также мой вопрос о де-сериализации. – Matthias
@Matthias: отредактирован снова. –