如何使用Optional调用类方法

时间:2018-01-29 15:49:02

标签: java optional

我试图从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)

1 个答案:

答案 0 :(得分:2)

ifPresent()接受Consumer作为参数 但是你传递给你想要调用的方法(我想这不会返回Consumer):

.ifPresent(applySearchConfig(searchCriteria.getSearch()));

此外,您在此使用map代替filter

.map(x -> StringUtils.isNotEmpty(x.getValue()))

因此,您将支票结果映射到truefalse 您不希望这样,因为这会使值显示其结果(truefalse)。

试试:

Optional.ofNullable(searchCriteria.getSearch())
   .filter(x -> StringUtils.isNotEmpty(x.getValue()))
   .ifPresent(x -> applySearchConfig(x, orderLines));