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;
}

现在,每当我整理其中一个FooBarIllegalAnnotationException抱怨commonField被列入propOrder但不在课堂上时。从propOrder注释中删除它一切正常,但我认为我应该列出所有映射的字段。我错过了什么?

4

1 回答 1

35

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

于 2011-07-22T13:02:15.537 回答