JAXB:如何实现与JAXB兼容的变体包装类? [英] JAXB: How to implement a JAXB-compatible variant wrapper class?
本文介绍了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
或者收藏和地图:
这篇关于JAXB:如何实现与JAXB兼容的变体包装类?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文