我试图从Optional.ispresent(callmethod)调用私有方法,但是出现编译错误。
基本上这是我要检查的条件,如果它满足,则调用私有方法。
final OrderLines orderLines = readFromMockFile();
if (null != searchCriteria.getSearch() && StringUtils.isNotEmpty(searchCriteria.getSearch().getValue())) {
applySearchConfig(searchCriteria.getSearch(), orderLines);
}
为了避免空检查,我使用Optional
重写了这段代码Optional.ofNullable(searchCriteria.getSearch())
.map(x -> StringUtils.isNotEmpty(x.getValue()))
.ifPresent(applySearchConfig(searchCriteria.getSearch()));
但是我收到编译错误类型Optional中的ifPresent(Consumer)方法不适用于参数(OrderLines)
答案 0 :(得分:2)
ifPresent()
接受Consumer
作为参数
但是你传递给你想要调用的方法(我想这不会返回Consumer
):
.ifPresent(applySearchConfig(searchCriteria.getSearch()));
此外,您在此使用map
代替filter
:
.map(x -> StringUtils.isNotEmpty(x.getValue()))
因此,您将支票结果映射到true
或false
您不希望这样,因为这会使值显示其结果(true
或false
)。
试试:
Optional.ofNullable(searchCriteria.getSearch())
.filter(x -> StringUtils.isNotEmpty(x.getValue()))
.ifPresent(x -> applySearchConfig(x, orderLines));