2013-01-17 11 views
12

Utworzono mapowanie spycharki dla ClassA do ClassB.Mapowanie listy obiektów za pomocą spycharki

Teraz chcę zmapować List<ClassA> na List<ClassB>.

Czy możliwe jest tylko

mapper.map(variableListClassA, variableListClassB) 

czy muszę iść na pętlę, na przykład

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

Odpowiedz

12

Należy użyć pętli, ponieważ typ listy jest usuwany w czasie wykonywania.

Jeśli obie listy są polem danej klasy, można odwzorować klasy własne.

+0

dziękuję za odpowiedź i wyjaśnienie! – user1323246

11

można też użyć klasy pomocnika to zrobić w jednym etapie

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

i rozmowa powyżej byłoby jak

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

Hmm .. Dobra odpowiedź – Bhuvan

+0

Czy nie byłoby bardziej poprawne dodanie generycznych do listy s1? jak Lista s1 = new ArrayList(); – Turtletrail

Powiązane problemy