Подтвердить что ты не робот

Отображение списков объектов с помощью Dozer

Я создал отображение бульдозера для ClassA для ClassB.

Теперь я хочу сопоставить List<ClassA> с List<ClassB>.

Можно ли просто

mapper.map(variableListClassA, variableListClassB) 

или мне нужно пройти цикл, например.

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

Ответ 1

Вам нужно использовать цикл, потому что тип списка удаляется во время выполнения.

Если оба списка являются полем класса, вы можете сопоставить классы-владельцы.

Ответ 2

вы также можете использовать класс-помощник, чтобы сделать это за один шаг

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;
}
}

и ваш вызов выше будет похож на

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