假设我们有这个类用于jaxb序列化:
@XmlRootElement
public class Property {
private String key;
private Object value;
public Property(String key, Object value) {
this.key = key;
this.value = value;
}
public Property() {
// a no-arg default constructor is needed;
// otherwise, a "com.sun.xml.bind.v2.runtime.IllegalAnnotationsException" is thrown
}
}
问题在于无参数构造函数Property()
:
我们是否需要初始化字段(key
和value
)?如果是这样,它们应该是什么?
答案 0 :(得分:2)
JAXB实现不要求您初始化字段。这取决于您的使用案例。
如果您没有为字段提供访问者方法,那么您应该在类上指定@XmlAccessorType(XmlAccessType.FIELD)
,以便JAXB将这些字段视为已映射。
您可以添加私有构造函数。这符合JAXB的要求并限制对它的访问。
如果对象中的字段是不可变的,那么您可以为您的类创建XmlAdapter
来处理此用例。