JAXB:如何实现与JAXB兼容的变体包装类? [英] JAXB: How to implement a JAXB-compatible variant wrapper class?

查看:134
本文介绍了JAXB:如何实现与JAXB兼容的变体包装类?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我如何实现一个variant类,它将作为Object和JAXB本机支持类型之间的适配器?

How could I implement a "variant" class which would act as an adapter between Object and JAXB-natively-supported types?

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

I could then use Object in JAXB-annotated classes.

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

Therefor, I guess, I would need to store a type ID inside that adapter.

任何想法?

注意:JAXB本机支持的类型是指类型如:

所有原始类型, 字符串日期 byte [] 列表< any-JAXB支持的类型>

NOTE: With "JAXB-natively-supported types" I mean types such as:
all primitive types, String, Date, byte[], List<any-JAXB-supported-type>.

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

    // ...
}



变体类创意伪代码



Variant Class Idea Pseudocode

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

    // ...
}



适配器类(琐碎的)



Adapter Class (Trivial)

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

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


推荐答案

这已经存在:参见 JAXBElement

或者收藏和地图:

utils-apl-derived project

这篇关于JAXB:如何实现与JAXB兼容的变体包装类?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆