属性未在自定义ArrayList扩展类上进行序列化

时间:2013-12-04 10:10:46

标签: java attributes simple-framework

这是我的问题,我有一个类A,如下所示:

class A {
    public A(MyList myList) {
        this.myList = myList;
    }

    @ElementList(name = "MyList", entry = "MyListElement", type = MyListElement.class)
    private MyList myList;

    // getters, setters ...
}

我的MyList课程是特定的ArrayList

class MyList extends ArrayList<MyListElement> {

    public MyList(Long attribute) {
        this.myListAttribute = attribute;
    }

    @Attribute(name = "MyListAttribute")
    private Long myListAttribute;

    // getters, setters ...
}

所以在这里,我的元素列表需要提供一个属性。我发现它是解决方案(扩展ArrayList&lt;&gt;类),或者我错了?

问题在于,一切运行良好,并按照我想要的方式进行序列化,甚至包含属性的MyListElement和许多元素,除了 MyList属性

当我尝试序列化时,我得到类似的东西:

<A>
    <MyList>  <!-- Here the attribute is missing... -->
         <MyListElement Att1="X" Att2="Something" Att3="Blabla">
             <AnElement>Test</AnElement>
             <AnotherElement>Test2</AnotherElement>
         </MyListElement>
    </MyList>
</A>

我想我在文档中遗漏了一些东西,也许我做错了什么。

提前致谢!

1 个答案:

答案 0 :(得分:1)

我刚刚找到另一种方法来做我想做的事。 也许我做错了,或者框架看起来不会在@ElementList属性上设置属性。

所以我改变了我的MyList类:

class MyList { // notice it does not extend ArrayList<MyListElement> anymore

    // Now I set this list in inline mode
    @ElementList(entry = "MyListElement", type = MyListElement.class, inline = true)
    private ArrayList<MyListElement> elementList;

    @Attribute(name = "MyListAttribute")
    private Long attribute;
}

和我的class A

class A {
   @Element(name = "MyList")
   private MyList myList;
}

这样,我得到了我的期望:

<A>
    <MyList MyListAttribute="...">
        <MyListElement></MyListElement>
    </MyList>
</A>