Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/343.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何使用Optional调用类方法_Java_Optional - Fatal编程技术网

Java 如何使用Optional调用类方法

Java 如何使用Optional调用类方法,java,optional,Java,Optional,我正试图从Optional.ispresent(callmethod)调用私有方法,但出现编译错误 基本上这就是我正在检查的条件,如果它满足,那么调用私有方法 final OrderLines orderLines = readFromMockFile(); if (null != searchCriteria.getSearch() && StringUtils.isNotEmpty(searchCriteria.getSearch().getValue())) {

我正试图从Optional.ispresent(callmethod)调用私有方法,但出现编译错误

基本上这就是我正在检查的条件,如果它满足,那么调用私有方法

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));