Java 可选的ifPresent,否则调用另一个函数
我写的代码是有效的,但是我必须创建额外的行,有没有办法将其压缩到一行中?逻辑:取最后一页,通过正则表达式执行搜索功能,如果未找到,则取前一页,通过正则表达式执行搜索功能Java 可选的ifPresent,否则调用另一个函数,java,optional,Java,Optional,我写的代码是有效的,但是我必须创建额外的行,有没有办法将其压缩到一行中?逻辑:取最后一页,通过正则表达式执行搜索功能,如果未找到,则取前一页,通过正则表达式执行搜索功能 Optional<String> totalBoxesLastPage = lastPage.locate(INVOICE_TOTAL_AMOUNT_BOXES); Optional<String> totalBoxes = totalBoxesLastPage.isPresent() ?
Optional<String> totalBoxesLastPage = lastPage.locate(INVOICE_TOTAL_AMOUNT_BOXES);
Optional<String> totalBoxes = totalBoxesLastPage.isPresent() ?
totalBoxesLastPage : nextToLastPage
.flatMap(p -> p.locate(INVOICE_TOTAL_AMOUNT_BOXES));
可选totalBoxesLastPage=lastPage.locate(发票\总金额\方框);
可选totalBoxes=totalBoxesLastPage.isPresent()?
totalBoxesLastPage:下一页最后一页
.flatMap(p->p.locate(发票\总额\金额\方框));
谢谢大家如果可选项为空,您可以与供应商一起使用
orElseGet
调用一些函数来计算值。如果存在值,则返回该值,否则返回由提供函数生成的结果。在您的情况下,您必须通过供应商
。此外,展开可选
后的返回类型应该是字符串
,而不是可选
您可以与供应商一起使用
orElseGet
调用某些函数,如果可选项为空,则该函数将计算值。如果存在值,则返回该值,否则返回由提供函数生成的结果。在您的情况下,您必须通过供应商
。此外,展开可选
后的返回类型应该是字符串
,而不是可选
这对我来说是可行的,我真的因为看不见而失明
or(Supplier<? extends Optional<? extends T>> supplier)
public Optional<String> findBetweenTwo(Page lastPage,Optional<Page> nextToLast,Pattern pattern) {
return lastPage.locate(pattern).or(() -> nextToLast.flatMap(p -> p.locate(pattern)));
}
or(Supplier这对我来说是可行的,我真的因为看不见东西而失明了
or(Supplier<? extends Optional<? extends T>> supplier)
public Optional<String> findBetweenTwo(Page lastPage,Optional<Page> nextToLast,Pattern pattern) {
return lastPage.locate(pattern).or(() -> nextToLast.flatMap(p -> p.locate(pattern)));
}
or(供应商自Java 9以来,存在ifPresentOrElse(Consumer@zforgoifPresentOrElse是无效的,感谢您的评论。请提供一个最小的、可重复的示例:因为Java9有ifPresentOrElse(Consumer@zforgo如果撤销其无效,感谢您的评论。请提供一个最小的、可复制的示例:该示例不起作用,因为退货类型是可选的。供应商应为供应商
类型。该示例不起作用,因为退货类型是可选的。供应商应为供应商
是,如果您想返回一个可选的
,那么或
就是方法。另外请注意,可选。或
在Java9或更高版本中可用。是的,如果您想返回一个可选的
,那么或
就是方法。另外请注意,可选。或
在Java9或更高版本中可用。