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

如何在多重空值判断场景中运用Java 8 Optional特性获取ctryCode?

使用Java 8 Optional优化多层空值判断获取ctryCode

直接用Java 8的Optional链式调用替代手动空值检查,代码更简洁且安全:

String ctryCode = Optional.ofNullable(paymtTrans.getPayee())
        .map(Payee::getPayeeAcc)
        .filter(accList -> accList != null && !accList.isEmpty())
        .map(accList -> accList.get(0))
        .map(PayeeAcc::getBnk)
        .map(Bnk::getBnkCtryCode)
        .orElse(null);

关键逻辑说明:

  • 用Optional.ofNullable()把最外层的Payee对象包装成Optional,从源头避免空指针
  • 每一步map()负责提取下一层对象,只要某一步返回null,后续所有操作会直接跳过,不会抛出异常
  • filter()专门过滤掉PayeeAcc集合为null或空的情况,防止调用get(0)时出错
  • 最后用orElse(null)指定空值场景下的默认返回值,如果业务要求必须有值,也可以换成orElseThrow(() -> new IllegalArgumentException("缺少国家编码信息"))抛出异常

这种写法完全替代了繁琐的多层if判断,代码可读性和维护性都更高,完全符合Java 8的函数式编程特性。

内容的提问来源于stack exchange,提问作者Kishore_2021

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.12 03:51:04