为什么JAXB没有编组我自己的子类

时间:2012-02-09 21:50:30

标签: jaxb marshalling

我有一个可以成功编组的jaxb对象,它有一个列表对象,然后我创建一个像下面这样的新对象

public class Sub extends SuperJAXBClass{

@Override
public List getList1(){
//override here
return ...;
}
}

然后代码如下: SuperJAXBClass sjc = new Sub(); 马歇尔(SJC)

然后我发现Sub中的List1没有成功编组。 谁知道为什么会这样? 怎么解决?

1 个答案:

答案 0 :(得分:3)

您可以执行以下操作之一:

选项#1 - @XmlSeeAlso注释

JAXB(JSR-222)实现不能使用Java反射来确定所有可能的蔗糖。作为一种解决方法,您可以使用@XmlSeeAlso注释来注释超类,该注释为JAXB提供对子类的引用。

@XmlSeeAlso({Sub.class})
public class SuperJAXBClass {
}

选项#2 - 创建JAXBContext时传递子类

如果在创建JAXBContext时包含子类,那么JAXB实现将会意识到它。当在超元类的元数据中传递子类时,也会创建。

JAXBContext.newInstance(Sub.class);