有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!


共 (2) 个答案

  1. # 1 楼答案

    它与@XmlAccessorType注释有关

    • XmlAccessType.PROPERTY:只有当字段被一些JAXB注释显式注释时,字段才会绑定到XML

    • XmlAccessType.FIELD:只有当Getter/setter对被一些JAXB注释显式注释时,它们才被绑定到XML

    根据评论更新解释:

    让我们考虑一个看起来像这样的简单的XML:

    <root>
        <value>someValue</value>
    </root>
    

    我们有一门课:

    @XmlRootElement(name = "root")
    //@XmlAccessorType(XmlAccessType.PROPERTY)
    @XmlAccessorType(XmlAccessType.FIELD)
    public class DemoRoot {
    
        @XmlElement
        private String value;
    
        public String getValue() {
            return value;
        }
    
        public void setValue(String value) {
            this.value = value;
        }
    }
    

    如果您尝试使用字段上方的XmlAccessType.FIELD@XmlElement注释来解组,则可以很好地解组

    如果使用XmlAccessType.PROPERTY,您将收到以下错误:

    IllegalAnnotationsException:IllegalAnnotationExceptions类的1个计数有两个同名的属性“value”

    这是因为它同时考虑了用@XmlElement显式注释的字段“value”和getter/setter

    反之亦然,如果移动getter/setter上的@XmlElement注释

  2. # 2 楼答案

    @XMLElement(以及类似的注释)在字段或getter之前的用法在本文中有很好的解释:http://blog.bdoughan.com/2011/06/using-jaxbs-xmlaccessortype-to.html

    类之前的以下注释确定字段/获取程序的XML绑定:

    • @XmlAccessorType(XmlAccessType.PUBLIC_成员):公共字段、带注释的字段和属性
    • @XmlAccessorType(XmlAccessType.PROPERTY):带注释的字段和属性
    • @XmlAccessorType(XmlAccessType.FIELD):字段和带注释的属性
    • @XmlAccessorType(XmlAccessType.NONE):带注释的字段和带注释的属性