You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何将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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.21 06:45:18