这是我的问题,我有一个类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>
我想我在文档中遗漏了一些东西,也许我做错了什么。
提前致谢!
答案 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>