java在字段之前使用@XmlElement与在getter声明之前使用@XmlElement有什么区别?
我可以通过两种方式声明JAXB元素:
@XmlElement
public int x;
或
private int x;
@XmlElement
public int getX(){...}
第一个变体AFAIK创建getter,无论如何,它映射到XML。这两种方式有什么区别
你可以在下面搜索框中键入要查询的问题!
我可以通过两种方式声明JAXB元素:
@XmlElement
public int x;
或
private int x;
@XmlElement
public int getX(){...}
第一个变体AFAIK创建getter,无论如何,它映射到XML。这两种方式有什么区别
# 1 楼答案
它与
@XmlAccessorType
注释有关XmlAccessType.PROPERTY
:只有当字段被一些JAXB注释显式注释时,字段才会绑定到XMLXmlAccessType.FIELD
:只有当Getter/setter对被一些JAXB注释显式注释时,它们才被绑定到XML根据评论更新解释:
让我们考虑一个看起来像这样的简单的XML:
我们有一门课:
如果您尝试使用字段上方的
XmlAccessType.FIELD
和@XmlElement
注释来解组,则可以很好地解组如果使用
XmlAccessType.PROPERTY
,您将收到以下错误:IllegalAnnotationsException:IllegalAnnotationExceptions类的1个计数有两个同名的属性“value”
这是因为它同时考虑了用
@XmlElement
显式注释的字段“value”和getter/setter反之亦然,如果移动getter/setter上的
@XmlElement
注释# 2 楼答案
@XMLElement(以及类似的注释)在字段或getter之前的用法在本文中有很好的解释:http://blog.bdoughan.com/2011/06/using-jaxbs-xmlaccessortype-to.html
类之前的以下注释确定字段/获取程序的XML绑定: