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
相关产品推荐
相关产品推荐

