Java 使用推土机映射对象列表

Java 使用推土机映射对象列表,java,mapping,dozer,Java,Mapping,Dozer,我为ClassA到ClassB创建了一个推土机映射 现在我想将列表映射到列表 有可能只是 mapper.map(variableListClassA, variableListClassB) 或者我必须经过一个循环,例如 for (ClassA classA : variableListClassA) { variableListClassB.add(mapper.map(classA, ClassB.class)) } 您需要使用循环,因为列表的类型在运行时被擦除 如果两个列表都

我为ClassA到ClassB创建了一个推土机映射

现在我想将
列表
映射到
列表

有可能只是

mapper.map(variableListClassA, variableListClassB) 
或者我必须经过一个循环,例如

for (ClassA classA : variableListClassA) {
    variableListClassB.add(mapper.map(classA, ClassB.class))
}

您需要使用循环,因为列表的类型在运行时被擦除


如果两个列表都是一个类的字段,那么您可以映射所属的类。

您还可以使用一个帮助器类在一个步骤中完成此操作

public class DozerHelper {

    public static <T, U> ArrayList<U> map(final Mapper mapper, final List<T> source, final Class<U> destType) {

        final ArrayList<U> dest = new ArrayList<U>();

        for (T element : source) {
        if (element == null) {
            continue;
        }
        dest.add(mapper.map(element, destType));
    }

    // finally remove all null values if any
    List s1 = new ArrayList();
    s1.add(null);
    dest.removeAll(s1);

    return dest;
}
}
公共类DozerHelper{
公共静态ArrayList映射(最终映射器映射器、最终列表源、最终类destType){
最终ArrayList dest=新ArrayList();
for(T元素:源){
if(元素==null){
继续;
}
dest.add(mapper.map(元素,destType));
}
//最后删除所有空值(如果有)
列表s1=新的ArrayList();
s1.添加(空);
目的地搬迁(s1);
返回目的地;
}
}
你上面的电话是这样的

List<ClassB> listB = DozerHelper.map(mapper, variableListClassA, ClassB.class);
List listB=DozerHelper.map(mapper,variableListClassA,ClassB.class);

将泛型添加到s1列表不是更正确吗?like List s1=新的ArrayList();