XStream - 在向接口添加函数后使用以前的序列化对象?

时间:2011-05-04 15:30:57

标签: java xml-serialization xstream

我使用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)

我看过XStream FAQ,但没有改变功能。有什么想法吗?

1 个答案:

答案 0 :(得分:1)

这听起来更像是匿名类的问题,而不是XStream或序列化机制本身。这些是真正的签名吗?您是否尝试更改命名类(非匿名类)的签名?