Я использую красивый маленький кусок xstream для выполнения сериализации.Обратный Совместим в xstream
У меня есть следующий класс:
// version 0
class A {
}
// version 1
class A {
Object o = new Object();
}
Для того, чтобы я прочитал версию 0 XML-файл для построения версии 1 класс А, я должен добавить следующий метод в версии 1 класс A:
class A {
private Object readResolve()
{
/* For backward compatible */
if (o == null) { o = new Object(); }
}
Object o = new Object();
}
Это работает до сих пор.
Теперь ситуация меняется на противоположную.
У меня есть следующий класс:
// version 0
class A {
Object o = new Object();
}
// version 1
class A {
}
Как я могу иметь возможность сделать чтение XML-файл версии 0, для построения класса А версии 1?
Вот исключение вы собираетесь получить, если вы пытаетесь сделать так:
run:
com.thoughtworks.xstream.converters.ConversionException: a : a
---- Debugging information ----
message : a : a
cause-exception : com.thoughtworks.xstream.mapper.CannotResolveClassException
cause-message : a : a
class : javaapplication15.Main$A
required-type : javaapplication15.Main$A
path : /javaapplication15.Main$A/a
line number : 2
-------------------------------
null
BUILD SUCCESSFUL (total time: 2 seconds)
Что XStream сказать, если вы десериализации с использованием XML-документ с дополнительным материалом в нем? –