Java Jaxb解组器不使用getter/setter,而预期

Java Jaxb解组器不使用getter/setter,而预期,java,jaxb,Java,Jaxb,在以下代码中使用注释时,我对Jaxb感到惊讶: @XmlRootElement() @XmlAccessorType(XmlAccessType.FIELD) public class Competences { @XmlElement(name = "lv") private List<Lv> lvs; public List<Lv> getLvs() { return null; } public void setL

在以下代码中使用注释时,我对Jaxb感到惊讶:

@XmlRootElement()
@XmlAccessorType(XmlAccessType.FIELD)
public class Competences {
    @XmlElement(name = "lv") private List<Lv> lvs;

    public List<Lv> getLvs() {
        return null;
    }

    public void setLvs(List<Lv> lvs) {
        this.lvs = lvs;
    }
}
@XmlRootElement()
@XmlAccessorType(XmlAccessType.FIELD)
公共类权限{
@XmlElement(name=“lv”)私有列表lv;
公共列表getLvs(){
返回null;
}
公共无效设置lvs(列表lvs){
this.lvs=lvs;
}
}
我希望解组结果是空的,但是他被填充了,就像他直接使用字段一样(尽管字段是私有的)

问题

  • Jaxb如何访问私有属性
  • 我应该如何让他使用getter/setter(同时保持字段访问权限)
Jaxb如何访问私有属性

通过反思。您(大多数时候)可以执行
Field.setAccessible(true)
并访问该字段,即使该字段是私有的

我应该如何让他使用getter/setter(同时保持字段访问权限)


这是一个奇怪的问题。
@xmlacessortype
正是关于指定如何访问映射类的属性。为什么要指定
字段
访问,而实际使用
属性
访问?

事实上,我觉得把注释放在属性上而不是放在getter上是很优雅的。所以我让自己相信,没有访问器,他无法访问它们。