У меня есть код, который смоделирован как таковые:XStream не будет вызывать readObject()
class A {
private transient Foo foo = new Foo();
private void readObject(ObjectInputStream in) throws IOException, ClassNotFoundException {
in.defaultReadObject();
foo = new Foo();
}
}
class B extends A {}
Я добавил readObject() к А так, что во время десериализации, переходный foo
будет инициализирован. Тем не менее, я оставил точки останова в своем коде и мог видеть, что XStream вообще не вызывает readObject(). Я также попытался приклеить readObject() в классе B, который вызывает функцию initFoo() в A, и это тоже не сработало.
Часто задаваемые вопросы на веб-сайте, похоже, не подразумевают, что для этого требуется какой-либо другой шаблон. Почему это не называется?
Я не думаю, что XStream использует инфраструктуру сериализации Java. Я полагаю, что эти методы используются, только если вы используете 'ObjectOutput/InputStream'. –
XStream использует спецификацию сериализации Java. http://xstream.codehaus.org/faq.html#Serialization_initialize_transient – eipark
Я стою исправлено. –