2012-02-09 10 views
3

を整列化されていないのはなぜ、私はその後JAXBは、私が正常に整列化することができJAXBオブジェクトを持っており、それがリストオブジェクトを持っている私自身のサブクラス

public class Sub extends SuperJAXBClass{ 

@Override 
public List getList1(){ 
//override here 
return ...; 
} 
} 

以下のような新しいオブジェクト以下のようなコードを作ります: SuperJAXBClassのSJC =新しいサブ()。 マーシャル(SJC)

は、その後、私はサブでのList1が正常に整列化されていません発見しました。 これがなぜ起こるのか誰も知っていますか? それを解決するには?

+0

どのようにJAXBConextを作成していますか?以下は助けることがあります。http://blog.bdoughan.com/search/label/Inheritance –

+0

JAXBContext.newInstance(SuperJAXBClass.class)。 – user999377

答えて

3

あなたは、次のいずれかを実行できます。

オプション#1 - @XmlSeeAlso注釈

JAXB(JSR-222)の実装が可能なすべてのsuclassesを決定するためにJavaリフレクションを使用することはできません。あなたの周りの仕事として、JAXBにサブクラスへの参照を提供し@XmlSeeAlsoアノテーションでスーパークラスに注釈を付けることができます。

@XmlSeeAlso({Sub.class}) 
public class SuperJAXBClass { 
} 

オプション#2 - JAXBContextの

を作成する場合JAXBContextを作成するときにサブクラスを含める場合は、JAXBの実装はそれを承知しているであろうサブクラスを渡します。スーパークラスのメタデータでサブクラスが渡されると、スーパークラスも作成されます。

JAXBContext.newInstance(Sub.class); 
+0

は、デバッグした後、私はサブクラスは、それが私はそれがスーパークラスのメソッドだと思う隠しgetList1方法を、持っているwhil getList1メソッドを持っていました。そしてJAXBマーシャルサブクラスそれが整列化することができないように、各時間は、返さgetList1隠された方法は、空になったときにその理由だかもしれません。 – user999377

関連する問題