所以我想有一个列表要用@XmlElements注释,如下所示
@XmlElements(
{
@XmlElement(name = "Apple", type = Apple.class),
@XmlElement(name = "Orange", type = Orange.class),
@XmlElement(name = "Mango", type = Mango.class)
}
)
public List<Fruit> getEntries() {
return fruitList;
}
我想知道是否存在一种强制列表包含至少1个元素的方法,因为现在,xsd看起来像
<xs:complexType name="fruitList">
<xs:sequence>
<xs:choice minOccurs="0" maxOccurs="unbounded">
<xs:element name="Apple" type="tns:apple"/>
<xs:element name="Orange" type="tns:orange"/>
<xs:element name="Mango" type="tns:mango"/>
</xs:choice>
</xs:sequence>
</xs:complexType>
最佳答案
假设Apple,Orange和Mango是Fruit的子类,您可能想用entries
注释@XmlElementRef
属性,该属性对应于XML模式中的替换组,而不是@XmlElements
对应选择的概念。
@XmlElementRef
public List<Fruit> getEntries() {
return fruitList;
}
假定Apple,Orange和Mango类扩展了Fruit类,并使用
@XmlRootElement
进行了注释@XmlRootElement
public class Apple extends Fruit {
...
}
有关更多信息