XStream - использовать предыдущий сериализованный объект после добавления функции в интерфейс? - PullRequest
0 голосов
/ 04 мая 2011

Я использую XStream для сериализации объекта "A", реализующего интерфейс:

interface MyInterface { 
       String functionA();
}

MyInterface a = new MyInterface() {...}

Теперь интерфейс изменился, и я добавил еще одну функцию:

interface MyInterface {
       String functionA();
       String functionB();
}

Попытка десериализации еготеперь происходит сбой (с перечисленным исключением), потому что интерфейс изменился - Но могу ли я заставить его работать как-то?

Это исключение:

com.thoughtworks.xstream.mapper.CannotResolveClassException: com.cf.TestSaveSerialization$1 : com.cf.TestSaveSerialization$1
    at com.thoughtworks.xstream.mapper.DefaultMapper.realClass(DefaultMapper.java:68)
    at com.thoughtworks.xstream.mapper.MapperWrapper.realClass(MapperWrapper.java:38)
    at com.thoughtworks.xstream.mapper.DynamicProxyMapper.realClass(DynamicProxyMapper.java:71)

Я посмотрел FAQ по XStream , но ничего не изменилось в изменении функций.Есть идеи?

1 Ответ

1 голос
/ 04 мая 2011

Звучит так, будто есть проблема с анонимным классом, а не с XStream или самим механизмом сериализации.Это настоящие подписи?Вы пытались изменить подпись именованного класса (неанонимного класса)?

...