JAXB 2注释和子类头痛

时间:2010-12-17 03:51:46

标签: jaxb marshalling subclass unmarshalling

我目前在JAXB上遇到了一个棘手的问题。所以我有以下类结构:

@XmlType
public abstract class MySuperClass
{
    ...
    ...
    @XmlTransient
    public Double getValue() ...
    ...
}

@XmlType
public class MySubClass extends MySuperClass
{
    public Double getValue()
    {
        return 100.00;
    }
}

@XmlType
public class MySubClass2 extends MySuperClass
{
    public Double getValue()
    {
        return 100.00;
    }
}

现在在我的另一个JAXB注释类中,我希望这样做:

@XmlType
public class MyOtherClass
{
    private MySuperClass var;

    public MySuperClass getVar()
    {
        return this.var;
    }
}

所以我的理由是我想在运行时设置var,以便实际的返回类型可以是MySubClass或MySubClass2。编组到XML是完美的,然而,解组回java类给了我null值。没有调用setter方法。如何正确解组并仍然维护类层次结构?

非常感谢帮助...

谢谢,

1 个答案:

答案 0 :(得分:1)

好的,解决了这个问题。似乎JAXB只在类中寻找声明的setter方法而不是父类。覆盖子类中的setter方法后,解组工作。