我有一堆具有共同字段的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;
}

现在,每当我将FooBar中的一个编码时,我都会收到一个IllegalAnnotationException,提示commonField列在propOrder中但不在类中。从propOrder批注中删除它,一切正常,但是我应该列出所有映射的字段。我想念什么?

最佳答案

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

  • http://bdoughan.blogspot.com/2011/06/ignoring-inheritance-with-xmltransient.html
  • 关于java - 我可以/应该在 “propOrder”批注中列出JAXB映射的bean的继承属性吗?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/6790168/

    10-09 19:47