java – 当Optional不为空时,如何防止传递给Optional的orElse的函数被执行?

如果我从orElse调用函数,即使Optional不为空,也会执行该函数.有没有办法限制函数的执行只有当Optional为空时?
Optional.ofNullable(someValue).orElse(someFunction());

解决方法

someFunction()被执行,因为它是传递给方法的参数,传递给方法的参数在执行方法之前被计算.为了避免执行,您应该在supplier实例中传递someFunction().

使用orElseGet而不是orElse:

Optional.ofNullable(someValue).orElseGet(SomeClass::someFunction);

要么

Optional.ofNullable(someValue).orElseGet(()->someFunction());

相关文章

最近看了一下学习资料,感觉进制转换其实还是挺有意思的,尤...
/*HashSet 基本操作 * --set:元素是无序的,存入和取出顺序不...
/*list 基本操作 * * List a=new List(); * 增 * a.add(inde...
/* * 内部类 * */ 1 class OutClass{ 2 //定义外部类的成员变...
集合的操作Iterator、Collection、Set和HashSet关系Iterator...
接口中常量的修饰关键字:public,static,final(常量)函数...