我尝试使用简单序列化嵌入式集合。 例如:
Map<String, List<MyClass>>
我已经在 MyClass 中添加了必要的注释,我尝试使用 @ElementMap 但它不起作用:
线程“main”中的异常 org.simpleframework.xml.transform.TransformException:不支持类 java.util.ArrayList 的转换
如果只是
@ElementMap Map<String, MyClass>
它工作正常。我不知道如何处理嵌入式集合。我知道 @ElementList
注释,但不知道在这种情况下如何使用它。有什么提示吗?
最佳答案
我遇到了同样的问题。我设法让它工作的唯一方法是一个非常俗气的 hack - 在另一个类中包装 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 对我的类(class)来说是完全私有(private)的(即其他类(class)永远无法直接与 map 对话),所以我在这里有这个额外的层这一事实并没有太大的区别。当然,生成的 XML 很糟糕,但同样,就我而言,它是可以忍受的,因为我的类之外没有任何东西在使用它。希望我有比这更好的解决方案,但此刻,我被难住了。
关于java - SimpleXml 框架 - 嵌入式集合,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5027706/