19

共通のフィールドを持つ JAXB アノテーション付きクラスがたくさんあるので、このようにそのフィールドをスーパークラスに移動しました

public class Base {
    protected SomeType commonField;
}

@XmlRootElement(name = "foo") @XmlType(propOrder = { "commonField", "fooField" })
public class Foo extends Base {
    private SomeOtherType fooField;
}

@XmlRootElement(name = "bar") @XmlType(propOrder = { "commonField", "barField" })
public class Bar extends Base {
    private SomeOtherType barField;
}

今では、FooいずれかBarをマーシャリングするか、クラスにリストされているがクラスに存在しないIllegalAnnotationExceptionことについて不平を言うときはいつでも。注釈からそれを削除するとすべて正常に機能しますが、マップされたすべてのフィールドをリストすることになっていると思いました。私は何が欠けていますか?commonFieldpropOrderpropOrder

4

1 に答える 1

35

継承されたクラスのフィールド/プロパティは、常に子クラスのフィールド/プロパティの前に表示されます。propOrderこれは、デフォルトでは、子タイプでそれらを指定できないことを意味します。ただし、親クラスをフィールド/プロパティとしてマークする@XmlTransientと、子クラスに属するものとして扱われ、propOrder.

于 2011-07-22T13:02:15.537 に答える