SimpleXml框架 - 嵌入式集合

Mar*_*iuk 11 java collections xml-serialization simple-framework

我尝试使用简单的序列化嵌入式集合.例如 :

Map<String, List<MyClass>>
Run Code Online (Sandbox Code Playgroud)

我已经在MyClass中添加了必要的注释,我尝试使用@ElementMap但它不起作用: Exception in thread "main" org.simpleframework.xml.transform.TransformException: Transform of class java.util.ArrayList not supported

如果它只是

@ElementMap Map<String, MyClass>
Run Code Online (Sandbox Code Playgroud)

它工作正常.我不知道如何处理嵌入式收藏.我知道@ElementList注释但在这种情况下不知道如何使用它.任何提示?

H.Y*_*.Y. 11

我遇到了同样的问题.我设法让它工作的唯一方法是一个非常俗气的黑客 - 在另一个类中包装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;
    }

}
Run Code Online (Sandbox Code Playgroud)

然后,而不是

@ElementMap Map<String,List<MyClass>>
Run Code Online (Sandbox Code Playgroud)

......你有:

@ElementMap Map<String,MyWrapper>
Run Code Online (Sandbox Code Playgroud)

在我的情况下,Map对我的类来说是完全私有的(即其他类永远不会直接与Map对话),所以我在这里有这个额外的层并没有太大的区别.当然,生成的XML是粗略的,但在我的情况下,它是可以忍受的,因为我的课程之外没有任何东西可以消耗它.希望我有一个比这更好的解决方案,但此刻,我很难过.