我使用ModelMapper 2.1.0并且有一个名为Converter的接口
我正在像这样使用这个转换器(模型映射器):
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 表达式。
如何将这个匿名内部类重写为一个实际上真正转换的 lambda 表达式?
我认为这个问题是 ModelMapper 无法正确解析 lambda 表达式中的泛型类型。
这是解决方法:
modelMapper.typeMap(Source.class, Destination.class)
.setConverter(ctx -> new Destination(ctx.getSource));
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句