我看到的行为,我无法解释与ModelMapper,同时试图映射一个布尔到字符。
(我已经检查过了,问题与隆布克无关)。
@Data @NoArgsConstructor @AllArgsConstructor
public class Entity { private boolean instance; }
@Data @NoArgsConstructor @AllArgsConstructor
public class Item { private char instance; }
public final class ModelMapperTest
{
private final ModelMapper modelMapper = new ModelMapper();
@Before
public void before()
{
modelMapper.addMappings(new PropertyMap<Entity, Item>()
{
protected void configure()
{
map().setInstance(source.isInstance() ? 'Y' : 'N');
}
});
}
@Test
public void map()
{
for (final Item item : map(new ArrayList<Entity>()
{
{
this.add(new Entity(true));
this.add(new Entity(false));
}
}))
{
System.out.println(item);
}
}
public List<Item> map(final List<Entity> entities)
{
return modelMapper.map(entities, new TypeToken<List<Item>>(){}.getType());
}
}它产生字符't‘和'f’而不是'Y‘和'N’,正如我所想的那样。
项目(instance=t) 项目(instance=f)
有人知道ModelMapper配置应该是什么样子吗?
发布于 2016-07-28 07:08:12
我认为您需要创建一个转换器来将布尔值映射为字符,如下所示:
Converter<boolean, char> toChar = new AbstractConverter<boolean, char>() {
protected char convert(boolean source) {
return source ? 'Y' : 'N;
}
}; 然后,您的ProperyMap应该使用这个转换器来映射它,如下所示:
@Before
public void before()
{
modelMapper.addMappings(new PropertyMap<Entity, Item>()
{
protected void configure()
{
using(toChar).map().setIsInstance(source.isInstance());
}
});
}请看这里:
https://stackoverflow.com/questions/34359029
复制相似问题