我已经从XSD创建了JAXB类,但是注意到有些类有setter
其中参数为Object
。查看XSD,看起来这可能是元素的缺失数据类型定义。我猜测由于没有数据类型定义,JAXB将setter的参数默认为Object
。这些元素中的一些(不是全部)也具有固定值集,因此可以解释为什么XSD中没有提供数据类型。
其中一个元素的一个例子是
<xs:element name="DefaultCar" fixed="XXXX"/>
我想使用Object
作为参数来覆盖JAXB,并使用例如String
。我使用外部绑定自定义文件取得了部分成功。尽管类的setter参数设置为我指定的值,但@XmlElement已被赋予type = Object.class
,因此覆盖了setter的参数。是否可以阻止JAXB为@XmlElement放置type = Object.class
?
@XmlAccessorType(XmlAccessType.FIELD)
@XmlType(name="Car", propOrder = {
"defaultCar"
}
public class Car {
@XmlElement(name = "DefaultCar", type = Object.class)
protected String defaultCar;
public void setDefaultCar(String value) {
this.defaultCar = value;
}
答案 0 :(得分:1)
在外部绑定自定义文件中,我在jxb:class ref="java.lang.String"
节点下使用了jxb:bindings
。 xjc: override xs:simpleType definition的建议指出了我正确的方向。