当前位置: 首页 > 面试题库 >

Java Null-pointer-safe访问器

孙斌
2023-03-14
问题内容

我正在阅读一篇与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#有一个类似的运算符(“
??”运算符),但是我想获取我正在使用的语言的文档。或者,这仅仅是我所使用的三元运算符的一种用法从没见过。

谢谢!

编辑:链接到文章:http : //infoworld.com/d/developer-world/12-programming-
mistakes-avoid-292


问题答案:

最初的想法来自groovy。它是针对Java 7提出的,作为Project
Coin的一部分:https
:
//wiki.openjdk.java.net/display/Coin/2009+Proposals+TOC(猫王和其他Null-
Safe运算符),但尚未被接受。

提出了相关的Elvis运算符?:的x ?: y简称x != null ? x : y,特别适用于x是复杂表达式的情况。



 类似资料:
  • Lua是一种为 Sandboxing (沙箱) 准备语言。 Safe Lua 让您轻松地使用Lua代码的沙箱创建和许多有趣的用途。 Lua is a language well prepared for sandboxing. Safe Lua lets you easily create and use sandboxes for Lua code for numerous interesting purposes.

  • safe-rm 是一个安全的文件删除工具,当因为误输入要删除某个系统目录时,该工具会阻止这种行为。

  • Password Safe是一个在国外拥有几百万用户的免费开源软件,软件同样采用开源的Twofish加密算法代码合成开发。该软件由一群致力于为公众开发免费应用软件 的国外民间组织提供。软件有多种平台版本和不同功能组合分类,根据不同版本其中包含了全世界的各种先进加密算法,如:PGP、AES、DES、IDEA、 Yubikey等。 该软件为其组织主要功能版本,提供用户保存日常各领域用户密码和提供强大的

  • 指向指针的指针是多个间接或指针链的形式。 通常,指针包含变量的地址。 当我们定义指向指针的指针时,第一个指针包含第二个指针的地址,它指向包含实际值的位置,如下所示。 必须声明一个指向指针的指针的变量。 这是通过在其名称前面放置一个额外的星号来完成的。 例如,以下是声明指向int类型指针的指针的声明 - int **var; 当目标值由指针指向间接指向时,访问该值需要应用星号运算符两次,如下例所示

  • 指向指针的指针是多个间接或指针链的形式。 通常,指针包含变量的地址。 当我们定义指向指针的指针时,第一个指针包含第二个指针的地址,它指向包含实际值的位置,如下所示。 必须声明一个指向指针的指针的变量。 例如, type iptr = ^integer; pointerptr = ^ iptr; 以下示例将说明概念并显示地址 - program exPointertoPointers;

  • 指向指针的指针是多个间接或指针链的形式。 通常,指针包含变量的地址。 当我们定义指向指针的指针时,第一个指针包含第二个指针的地址,它指向包含实际值的位置,如下所示。 必须声明一个指向指针的指针的变量。 这是通过在其名称前面放置一个额外的星号来完成的。 例如,以下是声明指向int类型指针的指针的声明 - int **var; 当目标值由指针指向间接指向时,访问该值需要应用星号运算符两次,如下例所示