Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/xml/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如果定义了带前缀的布尔方法,JAXB将忽略属性_Java_Xml_Jaxb - Fatal编程技术网

Java 如果定义了带前缀的布尔方法,JAXB将忽略属性

Java 如果定义了带前缀的布尔方法,JAXB将忽略属性,java,xml,jaxb,Java,Xml,Jaxb,这个简单的1-prop类工作正常,可以使用ummarshaled @XmlRootElement @XmlAccessorType(XmlAccessType.NONE) public class AdditionalGetter { private float a; @XmlElement(name = "my_prop_a", required = false) public float getA() { return a; } p

这个简单的1-prop类工作正常,可以使用ummarshaled

@XmlRootElement
@XmlAccessorType(XmlAccessType.NONE)
public class AdditionalGetter {
    private float a;

    @XmlElement(name = "my_prop_a", required = false)
    public float getA() {
        return a;
    }

    public void setA(float a) {
        this.a = a;
    }

    // public boolean isA() {
    //    return true;
    // }
}
输出:

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<additionalGetter>
    <my_prop_a>7.0</my_prop_a>
</additionalGetter>

7
但是如果我用方法isA()取消注释该行,它将不再工作,并且输出仅为(on win):


因此,它看起来像是JAXB的命名冲突。实际上acessor类型none应该忽略otref字段,但是isA()方法阻止了a字段被marschall

所以这是一种不经意的修复方法,只是重命名方法isA()以避免冲突。但我想知道:

1) JAXB真的禁止这样做吗?如果是,说明在哪里


2) 在不重命名此方法(并破坏现有jar接口)的情况下,是否有任何方法可以使封送工作正常?我尝试了@xmltransive,但没有效果。

只需在
公共布尔isA()前面添加
@xmltransive
,这将防止jaxb在生成的xml中包含该方法

@XmlTransient
public boolean isA() {
    return true;
}
@XmlTransient
public boolean isA() {
    return true;
}