当前位置: 首页 > news >正文

Java的Optional实现优雅判空新体验【最佳实践】

背景

在Java的开发中条件判断很常见,若全部使用if-else判断,维护起来似乎有点麻烦,本期记录使用Optional实现,方便备查。

一、创建对象

创建Optional对象,推荐使用【ofNullable】属性,支持泛型
若传递的值为 null,仍然会创建空的Optional对象

Order order = new Order();
Optional<Order> optional = Optional.ofNullable(order);

二、对象判空

对象判空可使用【isPresent】,判断对象是否包含非空值

if(optional.isPresent()){System.out.println("optional存在空值");
};

三、设置默认值

若某个属性为空,则可设置默认值,

方式一、直接赋值

可使用【orElse
当姓名name属性为空时,可指定返回【匿名用户】

String name = Optional.of(order).map(Order :: getName).orElse("匿名用户");

方式二、懒加载方式

可使用【orElseGet

String newName = Optional.of(order).map(Order :: getName).orElseGet(() -> {return "新用户";});

在这里插入图片描述

http://www.dtcms.com/a/358941.html

相关文章:

  • 做一个实用的节假日工具
  • MQTT 连接建立与断开流程详解(一)
  • sunset: decoy靶场渗透
  • 20250830_Oracle 19c CDB+PDB(QMS)默认表空间、临时表空间、归档日志、闪回恢复区巡检手册
  • day42-Ansible
  • 动态规划--Day05--最大子数组和--53. 最大子数组和,2606. 找到最大开销的子字符串,1749. 任意子数组和的绝对值的最大值
  • 微信小程序开发教程(三)
  • java如何保证线程安全
  • RLPD——利用离线数据实现高效的在线RL:不进行离线RL预训练,直接应用离策略方法SAC,在线学习时对称采样离线数据
  • 【OpenGL】LearnOpenGL学习笔记17 - Cubemap、Skybox、环境映射(反射、折射)
  • 【pandas】.loc常用操作
  • 【SpringMVC】SSM框架【二】——SpringMVC超详细
  • 【运维篇第三弹】《万字带图详解分库分表》从概念到Mycat中间件使用再到Mycat分片规则,详解分库分表,有使用案例
  • DAEDAL:动态调整生成长度,让大语言模型推理效率提升30%的新方法
  • 基于SpringBoot的电脑商城系统【2026最新】
  • 漫谈《数字图像处理》之分水岭分割
  • SystemVerilog学习【七】包(Package)详解
  • REST-assured获取响应数据详解
  • 数据结构 | 深度解析二叉树的基本原理
  • 访问Nginx 前端页面,接口报502 Bad Gateway
  • 【DeepSeek】ubuntu安装deepseek、docker、ragflow
  • 简历书写---自我评价怎么写
  • Day18_【机器学习—交叉验证与网格搜索】
  • Unity核心概念①
  • 【Linux】基础I/O和文件系统
  • PHP单独使用phinx使用数据库迁移
  • 全栈开源,高效赋能——启英泰伦新官网升级上线!
  • 快速学习和掌握Jackson 、Gson、Fastjson
  • React Native基本用法
  • 大语言模型生成的“超龄劳动者权益保障制度系统化完善建议(修订版)”