JAXB没有可选集合

问题描述:

我正在写一个JAXB实体。JAXB没有可选集合

public class Person { 

    public Collection<String> getNames() { 
     if (names == null) { 
      names = new ArrayList<String>(); 
     } 
    } 

    @XmlElement(required = true) 
    private int age; 

    @XmlElement(name = "name") 
    @XmlElementWrapper(required = true) 
    private Collection<String> names; 
} 

假设我们有以下实例。

final Person person = new Person(); 
person.setAge(18); 

当我名帅这种情况下我

<person> 
    <age>18<age> 
</person> 

这是不是我的预期。

我打电话getNames()只有后,我能得到

<person> 
    <age>18</age> 
    <games/> 
<person> 

这是正常的吗?

+0

我目前通过提供内部调用'getGames'的'beforeMarshal(Marshaller)'方法来解决这个问题。 – 2012-03-13 03:33:03

+0

糟糕,在'@ XmlElementWrapper'上添加'nillable = true'使得相同的解决方案。我认为这样更好。 – 2012-03-13 03:35:30

将名称设置为构造函数中的新ArrayList或字段定义中的静态分配。

+0

谢谢。我在'@ XmlElementWrapper'上用'nillable = true'属性解决了问题。 – 2012-03-13 03:42:16