我有一个应用程序,它使用XStream将类序列化和反序列化为XML。它很棒。我有一个问题,静态内部类是否可序列化。根据XStream's FAQs,它可以。但是,具有嵌套静态类的Test类似乎不是序列化数据。
public static class TestInner
{
public static String param1;
public static String param2;
public static String getParam1()
{
return param1;
}
public static void setParam1(final String param1)
{
TestInner.param1 = param1;
}
public static String getParam2()
{
return param2;
}
public static void setParam2(final String param2)
{
TestInner.param2 = param2;
}
}
final XStream xstream = new XStream();
final TestInner inner = new Test.TestInner();
inner.setParam1("valueparam1");
inner.setParam2("valueparam2");
logger.info("{}", xstream.toXML(inner));
产量,
<test.Test_-TestInner/>
这是XStream的已知行为或限制吗?
使用the Xstream tutorial测试(这与你提供的代码相当)并且正在工作[你的代码和我的代码之间的区别是我的变量不是静态的]我认为这就是原因。也使用以下依赖项
package com.stackoverflow;
public class TestRunnerOuter {
public static class TestRunner{
private String name;
public TestRunner() {}
public TestRunner(String name) {
this.name = name;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}
}
然后 - >
XStream xstream = new XStream();
TestRunner inner = new TestRunnerOuter.TestRunner();
inner.setName("Test");
System.out.println(xstream.toXML(inner));
dependency->
<dependency>
<groupId>com.thoughtworks.xstream</groupId>
<artifactId>xstream</artifactId>
<version>1.4.11.1</version>
</dependency>
输出 - >
<com.stackoverflow.TestRunnerOuter_-TestRunner>
<name>Test</name>
</com.stackoverflow.TestRunnerOuter_-TestRunner>