1

私は現在、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;
    }
}

その理由は、実際の戻り値の型が MySubClass または MySubClass2 になるように、実行時に var を設定したいからです。XML へのマーシャリングは問題ありませんが、Java クラスへのアンマーシャリングで null 値が返されました。setter メソッドが呼び出されませんでした。どうすれば正しく非整列化し、クラス階層を維持できますか?

助けていただければ幸いです...

ありがとう、

4

1 に答える 1

1

OK、これを解決しました。JAXBは、クラス内で宣言されたsetterメソッドのみを探しており、親クラスには行かないようです。サブクラスのsetterメソッドをオーバーライドした後、アンマーシャリングが機能しました。

于 2010-12-17T17:37:21.393 に答える