Je me demande comment convertir une liste d'un type en un tableau d'un autre type en Java en utilisant Dozer. Les deux types ont tous les mêmes noms/types de propriété. Par exemple, considérons ces deux classes.Convertir la liste d'un type à Array d'un autre type en utilisant Dozer
public class A{
private String test = null;
public String getTest(){
return this.test
}
public void setTest(String test){
this.test = test;
}
}
public class B{
private String test = null;
public String getTest(){
return this.test
}
public void setTest(String test){
this.test = test;
}
}
J'ai essayé cela sans succès.
List<A> listOfA = getListofAObjects();
Mapper mapper = DozerBeanMapperSingletonWrapper.getInstance();
B[] bs = mapper.map(listOfA, B[].class);
J'ai également essayé d'utiliser la classe CollectionUtils.
CollectionUtils.convertListToArray(listOfA, B.class)
Ni travailler pour moi, quelqu'un peut-il me dire ce que je fais mal? La fonction mapper.map fonctionne correctement si je crée deux classes wrapper, l'une contenant une List et l'autre a []. Voir ci-dessous:
public class C{
private List<A> items = null;
public List<A> getItems(){
return this.items;
}
public void setItems(List<A> items){
this.items = items;
}
}
public class D{
private B[] items = null;
public B[] getItems(){
return this.items;
}
public void setItems(B[] items){
this.items = items;
}
}
Cela fonctionne assez curieusement ...
List<A> listOfA = getListofAObjects();
C c = new C();
c.setItems(listOfA);
Mapper mapper = DozerBeanMapperSingletonWrapper.getInstance();
D d = mapper.map(c, D.class);
B[] bs = d.getItems();
Comment puis-je faire ce que je veux faire sans utiliser les classes d'emballage (C & D)? Il doit y avoir un moyen plus facile ... Merci!
Dans votre liste dernière il y a une faute de frappe, la commande de mappage doit être: D d = mapper.map (c , D.class); Juste essayé de comprendre votre problème et des exemples. –
Merci, corrigé. – aheuermann