12
私は共通のフィールドを持っているJAXB注釈付きクラスの束を持っているので、私は文句IllegalAnnotationException
を取得したときにIマーシャルFoo
の1またはBar
私は今、このCan/"propOrder"アノテーションのJAXBマップBeanの継承プロパティをリストすることはできますか?
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;
}
のように、スーパークラスにそのフィールドを移動約commonField
はpropOrder
に記載されているが、クラスには存在しない。 propOrder
アノテーションからそれを削除すると、すべて正常に動作しますが、マップされたすべてのフィールドを一覧表示するはずです。私は何が欠けていますか?
スーパークラスのプライベートな実装の詳細にサブクラスでこのカップルの注釈があることに注意してください。手動で 'propOrder'を変更することなく、スーパークラスのフィールド名を偶然リファクタリングすると、サブクラスの直列化が中断されます。スーパークラスにシリアル化されたフィールドを追加します。また、 'propOrder'の名前は@XmlElementアノテーションで提供される名前ではなく、Javaのフィールドやプロパティの識別子です。 [それは、この答えは今日私にとって非常に役に立ちました。] –