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

如何使用Java Optional优化对象属性赋值代码,替代手动非空判断

Optional 代码优化方案

以下优化写法完全对齐你原有逻辑,无手动空值判断,符合Optional函数式编程规范:

Java 8 全兼容通用写法

public Optional<Score> calculate(){
    return getScore().map(score -> {
        score.setScore(13D);
        score.setPercentage(15D);
        return score;
    });
}

Java 9+ 更简洁写法

Java 9 为Optional新增了peek方法,专门用于对存在的元素执行副作用操作(修改属性、打印日志等),无需手动返回元素:

public Optional<Score> calculate(){
    return getScore().peek(score -> {
        score.setScore(13D);
        score.setPercentage(15D);
    });
}

逻辑说明

  • 空值判断完全由Optional内置实现:如果getScore()返回空Optional,map/peek会直接跳过执行逻辑,返回空Optional,和你原有代码的分支逻辑完全等价
  • 无需手动调用get()取实例,避免了不规范调用可能触发的NoSuchElementException
  • 无冗余临时变量和分支判断,符合函数式编程风格
  • 如果不需要修改原有Score实例,只需要在lambda内新建Score对象,拷贝属性后赋值新值返回即可,外层逻辑无需调整

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.25 11:06:04