Optional.ifPresent用于在值存在时执行操作,避免null检查,接收Consumer接口,值存在时执行对应逻辑,否则不处理;示例包括打印字符串、方法引用及链式调用中结合filter使用;注意其返回void,不可用于获取结果或继续构造Optional,无值时需额外处理应使用ifPresentOrElse。

Java 中的 Optional.ifPresent 方法用于在 Optional 包含有值时执行某个操作,避免显式地进行 null 检查。这个方法接收一个 Consumer 函数式接口作为参数,当 Optional 非空时,会将内部的值传给该 Consumer 并执行。
基本语法
ifPresent(Consumer super T> action)其中 action 是一个 lambda 表达式或方法引用,用来处理 Optional 中的值。如果 Optional 为空(empty),则什么也不做,不会抛出异常。
使用场景和示例
1. 避免空指针判断
传统写法需要先判断是否为 null:
使用 Optional 可以更简洁:
Optional2. 结合方法引用简化代码
如果只是调用某个方法,可以直接使用方法引用:
3. 在链式调用中使用
Optional 常与其他方法连用,比如 filter、map 等:
只有当 email 存在且包含 @ 符号时,才会发送欢迎邮件。
Shopxp购物系统历经多年的考验,并在推出shopxp免费购物系统下载之后,收到用户反馈的各种安全、漏洞、BUG、使用问题进行多次修补,已经从成熟迈向经典,再好的系统也会有问题,在完善的系统也从在安全漏洞,该系统完全开源可编辑,当您下载这套商城系统之后,可以结合自身的技术情况,进行开发完善,当然您如果有更好的建议可从官方网站提交给我们。Shopxp网上购物系统完整可用,无任何收费项目。该系统经过
立即学习“Java免费学习笔记(深入)”;
注意事项
- ifPresent 不返回值(void),不能用于获取结果或继续链式构造 Optional。
- 如果需要在无值时做额外处理,应结合 ifPresentOrElse 或 isPresent 配合 else 使用。
- 不要在 ifPresent 内部强行改变外部变量,容易引发副作用,违背函数式编程初衷。
基本上就这些。ifPresent 让代码更安全、简洁,适合“有值就处理”的场景,是日常开发中很实用的方法。









