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));
}
uj5u.com熱心網友回復:
看到這個答案:呼叫靜態泛型方法
呼叫泛型方法時需要指定泛型型別(此處為LocaleDate )。在您的方法呼叫中,它無法指定方法型別,因此將其繼承為 Object。所以你需要像下面這樣指定它(假設 Test 是你的類名):
static final Function<Bill,Optional<String>> dateOfInjuryNotNull = b ->
toDateOfInjury.andThen(
o -> Test.<LocalDate>checkPresence("No date of injury").apply(o).apply(b));
但是你面臨其他需要解決的問題。
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/412125.html
標籤:
