在XStream上序列化静态嵌套类成员

问题描述 投票:-1回答:1

我有一个应用程序,它使用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的已知行为或限制吗?

java inner-classes xstream
1个回答
0
投票

使用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>
© www.soinside.com 2019 - 2024. All rights reserved.