如何在多重空值判断场景中运用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
相关产品推荐
相关产品推荐

