2010-12-17 10 views
1

私は現在、JAXBの扱いにくい問題に取り組んでいます。JAXB 2注釈とサブクラスの頭痛

@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値を返しました。セッターメソッドは呼び出されませんでした。クラス階層を正しくアンマーシャリングして維持するにはどうすればよいですか?

ヘルプがずっと解決この1つを得た、...

おかげで、

答えて

1

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