我有一个具有公共基类的对象列表,我试图使用jaxb将其序列化为XML.我希望在编组时使用派生类的注释,但是我很难到达那里.
import java.util.Arrays;
import java.util.List;
import javax.xml.bind.JAXBContext;
import javax.xml.bind.JAXBException;
import javax.xml.bind.Marshaller;
import javax.xml.bind.annotation.XmlRootElement;
public class Runner {
@XmlRootElement(name="base")
public static abstract class Base {
public int baseValue;
public Base() {
this.baseValue = 0;
}
}
@XmlRootElement(name="derived")
public static class Derived extends Base {
public int derivedValue;
public Derived() {
super();
this.derivedValue = 1;
}
}
@XmlRootElement(name="derived2")
public static class Derived2 extends Base {
public int derivedValue;
public Derived() {
super();
this.derivedValue = 1;
}
}
@XmlRootElement(name="base_list")
public static class BaseList {
public List
我想要:
但是,上面的代码给出了:
有没有办法强迫它使用派生类?在实际情况中,我事先并不知道可能来自Base的类.
请注意,我只需要编组,而不是解组数据.
最佳答案
您可以使用@XmlElementRef批注来处理此用例. @XmlElementRef对应于XML模式中的替换组的概念.
原文链接:https://www.f2er.com/java/437860.html例如:
> http://bdoughan.blogspot.com/2010/11/jaxb-and-inheritance-using-substitution.html