我使用的是ModelMapper 2.1.0,有一个名为转换器的接口
我像这样使用这个Converter(modelmapper):
import org.modelmapper.Converter;
public class MyClass {
private ModelMaper myMapper = new ModelMapper();
Converter<Instant, java.util.Date> myDateConverter;
@Before
public void setup() {
myDateConverter = new Converter<Instant, java.util.Date>() {
@Override
public java.util.Date convert(MappingContext<Instant, java.util.Date> mappingContext) {
return java.util.Date.from(mappingContext.getSource());
}
}
}
@Test
public void fromDto() {
myMapper.addConverter(myDateConverter);
....
assertThat(domain.getDate()).isEqualTo(dto.getDate())
}
}
现在我只想用lambda重写匿名内部类,如下所示:
myDateConverter = mappingContext -> java.util.Date.from(mappingContext.getSource());
但是当我测试(JUnit)时,当它是λ表达式时,转换器返回null
。
如何将这个匿名内部类重写为lambda表达式,这样才能真正进行转换?
发布于 2018-08-23 09:11:39
我认为这个问题是ModelMapper不能正确解析lambda表达式中的泛型类型。
以下是解决方法:
modelMapper.typeMap(Source.class, Destination.class)
.setConverter(ctx -> new Destination(ctx.getSource));
https://stackoverflow.com/questions/51962259
复制相似问题