我可以/应该在“propOrder”注释中列出JAXB映射的Bean的继承属性吗?

2022-09-02 12:24:04

我有一堆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;
}

现在,每当我编组其中一个或我得到一个抱怨被列在名单上,但不在课堂上出现。从注释中删除它一切正常,但是我应该列出所有映射的字段。我错过了什么?FooBarIllegalAnnotationExceptioncommonFieldpropOrderpropOrder


答案 1

继承类中的字段/属性将始终显示在子类上的字段/属性之前。这意味着默认情况下,您无法在 on 子类型中指定它们。但是,如果将父类标记为字段/属性,则将被视为属于子类,并且可以包含在 .propOrder@XmlTransientpropOrder


答案 2

推荐