Java 17:能否用一行代码实现Optional存在则返回否则继续执行?
解决方案
可以利用Java 9引入的Optional.or(Supplier<? extends Optional<? extends T>>)方法,结合Lambda表达式把逻辑简化为一行,完全满足你的要求:
public Optional<String> someMethod() { // stuff here return checkValue(someValue).or(() -> { /* more stuff here */ return someOtherMethod(); }); }
逻辑说明
- 仅调用一次
checkValue(someValue),避免重复执行复杂逻辑 - 无需额外变量,直接通过
or方法处理分支:- 如果
checkValue返回的Optional存在值,直接返回该Optional - 如果不存在值,执行Lambda中的
more stuff逻辑,最后返回someOtherMethod()的结果
- 如果
你使用的Java 17完全支持Optional.or方法,这个写法既简洁又符合代码规范。
内容的提问来源于stack exchange,提问作者user17331277
相关产品推荐
相关产品推荐

