2011-08-26 9 views
18

この質問はAutoMapperとは関係ありません。 私の質問は、JavaのModelMapperについてですが、私の小さな評判としてmodelmapperの新しいタグを作成することはできません。混乱させて申し訳ありません。ModelMapperライブラリは、ArrayListやHashSetのようなコレクションをサポートしていますか?

とにかく、私の質問は、ライブラリサポートコレクション、arraylistやhashsetですか?それはコレクションへのコレクションマッピングをサポートしていないようです。 それは本当ですか?

答えて

2

はい - コレクションからコレクションへのマッピングがサポートされています。例:

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

を使用すると、コレクション約2つのラッパークラスを使用していました。それがなければ可能だろうか? – miguelcobain

+0

@miguelcobain - はい、ラッパーはちょうど私が与えた例に起こった。 – Jonathan

29

また、直接)(集合をマッピングすることができます

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

あなたは配列を扱う場合にもTypeTokenのものを避けることができます。この例では

List<PropertyDefinition<?>> list = ngbaFactory.convertStandardDefinitions(props); 
    ModelMapper modelMapper = new ModelMapper(); 
    PropertyDefinitionDto[] asArray = modelMapper.map(list, PropertyDefinitionDto[].class); 
関連する問題