如何将isPresent()判断及方法调用改写为ifPresent()?
用
ifPresent()改写你的代码片段 嘿,这事儿很容易搞定!咱们直接把原来的if判断换成Optional自带的ifPresent()方法,既符合Java函数式编程的风格,还能避免手动调用get()可能带来的潜在风险(虽然你已经做了存在性检查,但用ifPresent()会更优雅)。
改写后的核心代码
pAlarms[0].getMoIdentifier().ifPresent(moIdentifier -> { Optional<AlarmValue[]> alarmValues = getAlarmsFromMo(moIdentifier); // 这里可以继续添加alarmValues的后续处理逻辑 });
简单说明
- 原来的
if (xxx.isPresent()) { xxx.get() }逻辑,完全可以替换成xxx.ifPresent(变量 -> { ... })的形式 - Lambda表达式里的
moIdentifier参数,就是原本你通过get()拿到的那个值,不用再手动调用get(),代码更简洁安全 - 如果你的
alarmValues需要在这个代码块之外使用,可以结合map()和orElse()来处理,比如:
Optional<AlarmValue[]> alarmValues = pAlarms[0].getMoIdentifier() .map(this::getAlarmsFromMo) .orElse(Optional.empty());
这样alarmValues会在MoIdentifier存在时被赋值为getAlarmsFromMo的返回值,否则就是空的Optional。
内容的提问来源于stack exchange,提问作者y07k2
相关产品推荐
相关产品推荐

