【发布时间】:2022-01-15 08:42:56
【问题描述】:
static <R> Function<Optional<R>,Function<R, Optional<String>>> checkPresence(String err){
return ro -> r -> ro.map(x -> emptyStrOpt.get())
.orElseGet(() -> Optional.of(err));
}
//toDateOfInjury is Function<Bill,LocalDate>
static final Function<Bill,Optional<String>> dateOfInjuryNotNull = b ->
toDateOfInjury.andThen(
o -> checkPresence("No date of injury").apply(o).apply(b));
IntelliJ 抱怨说,对于 o,它需要 Optional<Object>,但它正在接收 Optional<LocalDate>。
另外,有没有办法使用泛型声明一个函数而不从方法中返回它?
编辑:为了完整起见,我们只说 toDateOfInjury 是
Function<Bill,Optional<LocalDate>> toDateOfInjury = b -> Optional.ofNullable(LocalDate.now()); //though it map to empty optional too of course
EDIT2:解决了第一个问题后,我将其修复如下:
static final Function<Bill,Optional<String>> dateOfInjuryNotNull2 = b ->
toDateOfInjury.andThen(
o -> EventValidationUtils.<LocalDate>checkPresence("No date of injury").apply(o)).apply(b);
static <R> Function<Optional<R>,Optional<String>> checkPresence(String err){
return ro -> ro.map(x -> emptyStrOpt.get())
.orElseGet(() -> Optional.of(err));
}
【问题讨论】:
-
详情请提供完整代码。
-
@MajidHajibaba 我为
toDateOfInjury添加了一个替代功能。Bill只是一个 dto。