Java JAXB:如何实现与JAXB兼容的变体包装类?

Java JAXB:如何实现与JAXB兼容的变体包装类?,java,jaxb,variant,Java,Jaxb,Variant,如何实现一个“variant”类,作为对象和JAXB本机支持的类型之间的适配器 然后,我可以在JAXB注释类中使用对象 因此,我想,我需要在适配器中存储一个类型ID 有什么想法吗 注意:对于“JAXB本机支持的类型”,我指的是如下类型: 所有基本类型,字符串,日期,字节【】,列表 使用场景 变异类思想伪码 适配器类(普通) 类VariantAdapter扩展了XmlAdapter{ @凌驾 公共对象封送处理(VariantObject arg0)引发异常{ // ... } @凌驾 公共Vari

如何实现一个“variant”类,作为对象和JAXB本机支持的类型之间的适配器

然后,我可以在JAXB注释类中使用对象

因此,我想,我需要在适配器中存储一个类型ID

有什么想法吗

注意:对于“JAXB本机支持的类型”,我指的是如下类型:
所有基本类型,
字符串
日期
字节【】
列表

使用场景 变异类思想伪码 适配器类(普通)
类VariantAdapter扩展了XmlAdapter{
@凌驾
公共对象封送处理(VariantObject arg0)引发异常{
// ...
}
@凌驾
公共VariantObjectUnmarshal(对象arg0)引发异常{
// ...
}
}
这已经存在:请参阅

或对于集合和地图:

不起作用,请参见:
@XmlType
class SomeClass {
    @XmlJavaTypeAdapter(VariantAdapter.class) // WITH OR WITHOUT?
    @XmlElement
    private Object somePrimitive = null;

    // ...
}
@XmlRootElement
@XmlType
class Variant {
    @XmlAttribute
    private final String typeID;
    @XmlAttribute
    private final String rawXML;

    // ...
}
class VariantAdapter extends XmlAdapter<Object, Variant> {
    @Override
    public Object marshal(VariantObject arg0) throws Exception {
        // ...
    }

    @Override
    public VariantObject unmarshal(Object arg0) throws Exception {
        // ...
    }
}