JAXB 2 аннотации и головная боль подклассов - PullRequest
1 голос
/ 17 декабря 2010

В настоящее время я застрял в неловкой проблеме на 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-классы дал мне нулевые значения. Метод установки не был вызван. Как я могу правильно распаковать и сохранить иерархию классов?

Помощь очень ценится ...

Спасибо

1 Ответ

1 голос
/ 17 декабря 2010

ОК, этот вопрос решен.Кажется, JAXB ищет объявленный метод setter только внутри класса и не обращается к родительскому классу.После переопределения метода сеттера в подклассе сработала демаршаллинг.

...