2013-01-17 16 views
12

ClassA'dan ClassB'ye bir dozer eşlemesi oluşturdum.Eşleştirmeler Dozer ile nesne listeleri

Şimdi bir List<ClassA> dosyasını bir List<ClassB> numarasına eşlemek istiyorum.

mümkün mü sadece

mapper.map(variableListClassA, variableListClassB) 

yoksa, örneğin bir döngü üzerinde gitmek zorunda yapmak

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

cevap

12

Döngüyü kullanmanız gerekir, çünkü listenin türü çalışma zamanında silinir.

Her iki liste de bir sınıf alanıysa, sahip olma sınıflarını eşleyebilirsiniz.

+0

gibi olurdu bunu bir yardımcı sınıf kullanabilirsiniz! – user1323246

11

ayrıca

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

ve tek adımda çağrı yukarıda cevap ve açıklama için teşekkür ederim

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

Hmm .. İyi Cevap – Bhuvan

+0

s1 listesine jenerik eklemek daha doğru olmaz mıydı? Liste gibi s1 = yeni ArrayList(); – Turtletrail