Java“?”运算符用于检查null - 它是什么?(不是三元!)

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (2)
  • 关注 (0)
  • 查看 (20)

我正在阅读一篇与Slashdot故事相关的文章,并且遇到了这个小小的消息:

采用最新版本的Java,通过为无尽指针测试提供简化语法,试图使空指针检查更容易。只需在每个方法调用中添加一个问号,就会自动包含对空指针的测试,替换老鼠的if-then语句嵌套,例如: public String getPostcode(Person person) { String ans= null; if (person != null) { Name nm= person.getName(); if (nm!= null) { ans= nm.getPostcode(); } } return ans } 有了这个: public String getFirstName(Person person) { return person?.getName()?.getGivenName(); }

我搜索了互联网(好吧,我花了至少15分钟搜索“java问号”的变体),但什么都没有。所以,我的问题是:有没有关于这方面的官方文档?我发现C#有一个类似的操作符(“??”操作符),但我想获取我正在使用的语言的文档。或者,这仅仅是我使用的三元运算符的用法从未见过。

提问于
用户回答回答于

最初的想法来自groovy。它被提议将Java 7作为Project Coin的一部分:https//wiki.openjdk.java.net/display/Coin/2009+Proposals+TOC(Elvis和其他Null-Safe Operators),但尚未被接受。

相关的Elvis算子?:被提出用来x ?: y缩写x != null ? x : y,当x是一个复杂的表达式时特别有用。

用户回答回答于

这种语法在Java中不存在,它也不会被包含在我所知的任何即将发布的版本中。

扫码关注云+社区