我从模式中自动生成 java 类(cxf-xjc-plugin),但是生成的类有一个Object.class
作为 setter 和 getter。
我的问题是如何使生成的类使用返回的 setter 和 getter
JAXBElement<?>
而不是Object
orJAXBElement<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 架构需要调整,我不喜欢