Jaxb unmarshall没有使用getter / setter,而期望

时间:2018-03-26 09:53:57

标签: 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 setLvs(List<Lv> lvs) {
        this.lvs = lvs;
    }
}

我希望unmarshall结果是空的,但是他就像是直接使用该字段一样填充(尽管该字段是私有的)。

问题

  • Jaxb如何访问私有属性?
  • 我怎么能让他使用getter / setter(同时保持FIELD访问权限)

1 个答案:

答案 0 :(得分:1)

  

Jaxb如何访问私有属性?

通过反思。你(大部分时间)都可以Field.setAccessible(true)进入该领域,即使它是私有的。

  

我怎么能让他使用getter / setter(同时保持FIELD访问权限)

这是一个奇怪的问题。 @XmlAccessorType正是指定如何访问映射类的属性。您为什么要指定FIELD访问权限但实际使用PROPERTY访问权限?