我有一堆具有共同字段的JAXB注释类,因此我将该字段移到了父类(super class)中,如下所示
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
,提示commonField
列在propOrder
中但不在类中。从propOrder
批注中删除它,一切正常,但是我应该列出所有映射的字段。我想念什么? 最佳答案
继承类的字段/属性将始终出现在子类的字段/属性之前。这意味着默认情况下,您不能在子类型的propOrder
中指定它们。但是,如果将父类标记为@XmlTransient
,则字段/属性将被视为属于子类,并且可以包含在propOrder
中。
关于java - 我可以/应该在 “propOrder”批注中列出JAXB映射的bean的继承属性吗?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/6790168/