0

我从模式中自动生成 java 类(cxf-xjc-plugin),但是生成的类有一个Object.class作为 setter 和 getter。

我的问题是如何使生成的类使用返回的 setter 和 getter JAXBElement<?>而不是ObjectorJAXBElement<Object>

当我尝试这个绑定

   ....
 <jaxb:bindings schemaLocation="my-schema-file.xsd" node="/xs:schema/xs:element[@name='MyObject']">
        <jaxb:property generateElementProperty="true" />
        <jaxb:class name="JAXBElement<T>"/>
 </jaxb:bindings>
  ....

我收到一个错误

value of attribute "name" associated with an element type "jaxb:class" must not contain the '<' character

总结一下。

从我得到的 xsd 模式生成一个类

....
public static class MyObject {
    Object name;
    public Object getName() {
        return name;
    }

    public void setName(Object value) {
        this.name = value;
    }

}
....

但我想得到

....
public static class MyObject<T> {
    JAXBElement<?> name;
    public JAXBElement<?> getName() {
        return name;
    }

    public void setName(JAXBElement<?> value) {
        this.name = value;
    }

}
....

更新NO.1

似乎是不可能的 我能做的最好的就是

       <jaxb:property>
                 <jaxb:baseType name="javax.xml.bind.JAXBElement" />
       </jaxb:property>

这不符合我的需要

       <jaxb:property>
                 <jaxb:baseType name="javax.xml.bind.JAXBElement<?>" />
       </jaxb:property>

是非法的。我想 xsd 架构需要调整,我不喜欢

4

0 回答 0