我有一个可以成功编组的jaxb对象,它有一个列表对象,然后我创建一个像下面这样的新对象
public class Sub extends SuperJAXBClass{
@Override
public List getList1(){
//override here
return ...;
}
}
然后代码如下: SuperJAXBClass sjc = new Sub(); 马歇尔(SJC)
然后我发现Sub中的List1没有成功编组。 谁知道为什么会这样? 怎么解决?
答案 0 :(得分:3)
您可以执行以下操作之一:
选项#1 - @XmlSeeAlso
注释
JAXB(JSR-222)实现不能使用Java反射来确定所有可能的蔗糖。作为一种解决方法,您可以使用@XmlSeeAlso
注释来注释超类,该注释为JAXB提供对子类的引用。
@XmlSeeAlso({Sub.class})
public class SuperJAXBClass {
}
选项#2 - 创建JAXBContext时传递子类
如果在创建JAXBContext
时包含子类,那么JAXB实现将会意识到它。当在超元类的元数据中传递子类时,也会创建。
JAXBContext.newInstance(Sub.class);