Java 如何使用Optional调用类方法
我正试图从Optional.ispresent(callmethod)调用私有方法,但出现编译错误 基本上这就是我正在检查的条件,如果它满足,那么调用私有方法Java 如何使用Optional调用类方法,java,optional,Java,Optional,我正试图从Optional.ispresent(callmethod)调用私有方法,但出现编译错误 基本上这就是我正在检查的条件,如果它满足,那么调用私有方法 final OrderLines orderLines = readFromMockFile(); if (null != searchCriteria.getSearch() && StringUtils.isNotEmpty(searchCriteria.getSearch().getValue())) {
final OrderLines orderLines = readFromMockFile();
if (null != searchCriteria.getSearch() && StringUtils.isNotEmpty(searchCriteria.getSearch().getValue())) {
applySearchConfig(searchCriteria.getSearch(), orderLines);
}
为了避免空检查,我使用可选的
Optional.ofNullable(searchCriteria.getSearch())
.map(x -> StringUtils.isNotEmpty(x.getValue()))
.ifPresent(applySearchConfig(searchCriteria.getSearch()));
但是我得到了编译错误。可选类型中的方法ifPresent(Consumer)不适用于参数(订单行)ifPresent()
接受Consumer
作为参数。但是您将要调用的方法传递给它(我认为它不会返回
使用者):
此外,您在此处使用了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));
谢谢,它起作用了。我没有想到要使用过滤器!!
Optional.ofNullable(searchCriteria.getSearch())
.filter(x -> StringUtils.isNotEmpty(x.getValue()))
.ifPresent(x -> applySearchConfig(x, orderLines));