Java - 如何在@XmlType 中动态设置 propOrder 属性

Java - How to set propOrder attribute dynamically within @XmlType

我有一个带有 xml 注释的 class,它将被实例化,然后用于生成一个 xml 文件。

@XmlAccessorType(XmlAccessType.FIELD)
@XmlType(name = "", propOrder = {
    "foo", "bar", "baz"
})
public class MyClass {

    @XmlElement(name = "foo", required = true)
    protected String foo;

    @XmlElement(name = "bar", required = true)
    protected String bar;

    @XmlElement(name = "baz", required = true)
    protected String baz;

    ...
}

我想使用变量(例如 version)动态设置属性 propOrder,如下所示:

@XmlAccessorType(XmlAccessType.FIELD)
@XmlType(name = "", propOrder = version.equals("1") ? {"foo", "bar", "baz"} : {"bar", "baz", "foo"}
)
public class MyClass {

    @XmlElement(name = "foo", required = true)
    protected String foo;

    @XmlElement(name = "bar", required = true)
    protected String bar;

    @XmlElement(name = "baz", required = true)
    protected String baz;

    ...
}

所以基于这个version参数,生成的xml文件看起来像

<foo></foo>
<bar></bar>
<baz></baz>

or 

<bar></bar>
<baz></baz>
<foo></foo>

有什么想法吗?

这是不可能的。注释在编译时处理。

PS:纯java是不可能的。如果你真的想要,你可以使用某种预处理器。