带推土机的 SuperCSV - 如何映射到列表列表?

SuperCSV with Dozer - How to map to a List of Lists?

将 SuperCSV 与 Dozer(版本 2.2.0)结合使用,我已经能够成功地将数据映射到 List。但是,我现在有一种情况,我想映射到 ListList 中。在我试图映射到的对象中,我有一个看起来像这样的字段:

List<List<String>> myListOfLists;

对于我的字段映射,我这样做了:

"myListOfLists[0][0]"、"myListOfLists[0][1]"、"myListOfLists[1][0]" 等

但是,这会导致以下错误:

org.dozer.MappingException: No read or write method found for field (myListOfLists[0]) in class (class com.foo.MyClassBeingMappedTo)

我似乎找不到任何嵌套集合的例子,但看起来这应该是可能的。有什么方法可以将数据映射到我的 List<List<String>> 字段?

我通过为我的内部 List 创建一个包装器 class 来解决这个问题。我像这样创建了一个内部 class:

public static class InnerListWrapper
{
    private List<String> innerList;

    public List<String> getInnerList()
    {
        return innerList;
    }
    public void setInnerList(List<String> innerList)
    {
        this.innerList = innerList;
    }
}

然后我的外层 List 看起来像这样:

List<InnerListWrapper> myListOfLists;

那么字段映射就是 "myListOfLists[0].innerList[0]","myListOfLists[0].innerList[1]", ""myListOfLists[1].innerList[0]", 等等

不是最干净的,但正如上面的评论所说,Dozer 似乎不支持嵌套列表。所以你必须在两者之间添加另一个class。