在Jaxb 2.1中使用@XmlTransient注释java方法时出现问题

时间:2013-12-18 15:09:03

标签: java xml jaxb

我试图在我的java类中将我的java方法注释为@XmlTransient,如下所示。

@XmlAccessorType(XmlAccessType.PROPERTY)
public abstract class MyClass {

    @XmlTransient
    public void addsomething{

   // do something
    }

}

当我尝试通过其他类在我的JaxBContext中使用此类时,我遇到了异常

JAXB annotation is placed on a method that is not a JAXB property
    this problem is related to the following location:
        at @javax.xml.bind.annotation.XmlTransient()

但是,当我看到XmlTransient()注释定义(@Target(value={FIELD,METHOD,TYPE}))时,显然可以使用方法。在JavaDoc(http://docs.oracle.com/javaee/7/api/javax/xml/bind/annotation/XmlTransient.html)中它说

The @XmlTransient annotation can be used with the following program elements:

a JavaBean property
field
class

我不能在方法上使用@XmlTransient吗?

1 个答案:

答案 0 :(得分:2)

@XmlTransient可以使用的唯一方法是以getset开头的方法。组合使用的这些方法用于在Java中公开属性。 @XmlTransient可以放在getset方法上。

获取方法

get方法必须不带参数并返回值:

public String getFoo() {
    return foo;
}

设置方法

set方法必须带一个参数。

public void setFoo(String foo) {
    this.foo = foo;
}