2011-08-26 6 views
18

Esta pregunta no está relacionada con AutoMapper. Mi pregunta es sobre ModelMapper en java, sin embargo, no puedo crear una nueva etiqueta para modelmapper como mi pequeña reputación. Perdon por la confusion.¿La biblioteca de ModelMapper admite colecciones como ArrayList o HashSet?

De todas formas, mi pregunta es ¿la biblioteca modelmapper admite colecciones como arraylist o hashset? parece que no admite el mapeo de colección a colección. ¿Es verdad?

Respuesta

2

Sí - Se admite el mapeo Colección a colección. Ej:

static class SList { 
    List<Integer> name; 
} 

static class DList { 
    List<String> name; 
} 

public void shouldMapListToListOfDifferentTypes() { 
    SList list = new SList(); 
    list.name = Arrays.asList(Integer.valueOf(1), Integer.valueOf(2), Integer.valueOf(3)); 
    DList d = modelMapper.map(list, DList.class); 

    assertEquals(d.name, Arrays.asList("1", "2", "3")); 
} 
+0

Para este ejemplo se utilizan dos clases de envoltura alrededor de las Colecciones. ¿Sería posible sin ellos? – miguelcobain

+0

@miguelcobain - Sí, el envoltorio resultó ser el ejemplo que di. – Jonathan

29

También puede asignar colecciones() directamente:

List<Person> persons = getPersons(); 
    // Define the target type 
    java.lang.reflect.Type targetListType = new TypeToken<List<PersonDTO>>() {}.getType(); 
    List<PersonDTO> personDTOs = mapper.map(persons, targetListType); 

Documentation on mapping Generics.

3

También puede evitar las cosas TypeToken si se trabaja con matrices:

List<PropertyDefinition<?>> list = ngbaFactory.convertStandardDefinitions(props); 
    ModelMapper modelMapper = new ModelMapper(); 
    PropertyDefinitionDto[] asArray = modelMapper.map(list, PropertyDefinitionDto[].class); 
Cuestiones relacionadas