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

时间:2011-07-20 12:46:24

标签: java jaxb variant

我如何实现一个“变体”类,它将充当Object和JAXB本机支持的类型之间的适配器?

然后我可以在JAXB注释类中使用Object。

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

有什么想法吗?

注意:“JAXB本机支持的类型”是指类型如:
所有原始类型,StringDatebyte[]List<any-JAXB-supported-type>

使用场景

@XmlType
class SomeClass {
    @XmlJavaTypeAdapter(VariantAdapter.class) // WITH OR WITHOUT?
    @XmlElement
    private Object somePrimitive = null;

    // ...
}

变体类Idea Pseudocode

@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 {
        // ...
    }
}

1 个答案:

答案 0 :(得分:0)

这已经存在:请参阅JAXBElement

或者收藏和地图:

utils-apl-derived project