我尝试使用简单的序列化嵌入式集合。 例如:
Map<String, List<MyClass>>
我已经在MyClass中添加了必要的注释,我尝试使用@ElementMap但它不起作用:
Exception in thread "main" org.simpleframework.xml.transform.TransformException: Transform of class java.util.ArrayList not supported
如果只是
@ElementMap Map<String, MyClass>
它工作正常。我不知道如何处理嵌入式收藏。我知道@ElementList
注释但在这种情况下不知道如何使用它。任何提示?
答案 0 :(得分:9)
我遇到了同样的问题。我设法让它工作的唯一方法是一个非常俗气的黑客 - 将List包装在另一个类中。
public class MyWrapper {
@ElementList(name="data")
private List<MyClass> data = new ArrayList<MyClass>();
public MyWrapper(List<MyClass> data) {
this.data = data;
}
public List<MyClass> getData() {
return this.data;
}
public void setData(List<MyClass> data) {
this.data = data;
}
}
然后,而不是
@ElementMap Map<String,List<MyClass>>
......你有:
@ElementMap Map<String,MyWrapper>
在我的情况下,Map对我的班级来说是完全私有的(即其他类永远不会直接与Map对话),所以我在这里有这个额外层的事实没有多大区别。当然,生成的XML是粗略的,但在我的情况下,它是可以忍受的,因为我的课程之外没有任何东西可以消耗它。希望我有一个比这更好的解决方案,但此刻,我很难过。