Castor XML映射和java。util。地图
在过去的几天里,我一直在使用Castor来尝试以可读的方式在Java程序和XML之间进行一些序列化。尽管Castor有一些缺点,但它通过反射自动生成xml的功能非常强大。不幸的是,有一件事情似乎被完全排除在示例之外,那就是处理泛型。反射API似乎做得很好,但由于它只是因为方法以get___()
开头而无意中捕获了大量冗余数据,所以我想编写自己的映射文件来避免这种情况
首先,在“field
”元素的属性中,应该定义“type
”,这似乎是完全公平的。但是,它没有指定如果此类型是抽象的或只是一个接口,应该执行什么操作。那么我应该把什么作为类型呢
其次,Castor(List
、Vector
、Collection
、Set
等)中指定的大多数“集合”类型对象只需要1个泛型类型,因此指定“type
”作为内部对象和“collection="true"
”就足够了。但是,它没有指定在像Map
这样的集合中应该做什么,其中需要两种类型。如何同时指定键类型和值类型
任何帮助都将不胜感激
# 1 楼答案
对于我的第一个问题,诀窍是不要在field元素中指定类型,而是允许Castor自己推断它。如果您有可能出现在那里的类的定义,那么它将自动使用这些定义。例如:
Castor的into XML输出将使用condition1和condition2样式的XML输入Clazz的“condition”字段,同时仍然引用其正确的实例化类型
# 2 楼答案
关于我的第二个问题:
当使用映射或表指定某个对象时,需要在
field
元素中的bind-xml
元素中重新定义org.exolab.castor.mapping.MapItem
。示例取自here另外,省略父
field
元素中的type
属性