Составление списков объектов с помощью Dozer
Я создал отображение бульдозера для ClassA в ClassB.
Теперь я хочу нанести на карту List<ClassA>
к List<ClassB>
,
Можно ли просто
mapper.map(variableListClassA, variableListClassB)
или я должен пройти через цикл, например
for (ClassA classA : variableListClassA) {
variableListClassB.add(mapper.map(classA, ClassB.class))
}
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);