【发布时间】:2018-08-23 09:11:39
【问题描述】:
我用的是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) 时,当它是 lambda 表达式时,转换器返回 null。
如何将这个匿名内部类重写为 lambda 表达式,并真正转换?
【问题讨论】:
-
你能发布你的单元测试吗?如果它根本不应该编译的话,真的不可能返回 null。
-
要实现这一点,您需要为此 lambda 表达式提供功能接口,但您使用的转换器不是功能接口
-
我把课程改成测试
标签: java spring lambda java-8 modelmapper