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

Java访问对象属性时避免空检查:是否存在替代空判断三元运算符的语法?

Java中的空安全简化方案

当然有啦!从Java 14开始,官方引入了空安全调用运算符(?.),完美替代你现在的三目表达式写法,代码更简洁还不容易出错。

直接替代现有写法

原来的冗余判断:

foo == null ? null : foo.bar

用?.运算符可以直接简化成:

foo?.bar

当foo为null时,整个表达式直接返回null;如果foo不为null,就正常获取它的bar属性值,和你原来的逻辑完全一致。

链式调用场景更实用

这个运算符还支持多层链式调用,比如需要嵌套访问属性时:

// 原来的嵌套三目写法,繁琐又容易写错
foo == null ? null : (foo.bar == null ? null : foo.bar.baz)

// 用?.简化后,逻辑一目了然
foo?.bar?.baz

只要链式调用中的任意一个对象是null,整个表达式就会返回null,彻底避免了层层判断的冗余代码。

Java 8及更早版本的替代方案

如果你的项目还在使用Java 8或更早版本,没有?.运算符的话,可以用Optional类模拟类似逻辑:

Optional.ofNullable(foo).map(fooObj -> fooObj.bar).orElse(null)

虽然比三目写法长一点,但在复杂场景下的可读性会更好。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.15 08:50:32