代码之家  ›  专栏  ›  技术社区  ›  JavaSheriff

检查对象是否为空的较短方法?

  •  1
  • JavaSheriff  · 技术社区  · 6 年前

    那么,有没有一种更短的方法来检查字符串/对象是否为空?

        String str = someMethodThatReturnsStringOrNull(someOthreObject);
        if(str == null) { System.out.println("Empty"); }
    

        if(str) { System.out.println("Empty"); }
    
    1 回复  |  直到 6 年前
        1
  •  10
  •   Andy Turner    6 年前

    号码

    boolean 或自动转换为 ; 唯一可以这样转换的类型是 Boolean ,通过拆箱。

    除非定义的方法名称非常短,否则不能使用更少的字符:

    if (n(str)) {   // "n()" requires 3 characters
    if (str == null) {  // " == null" requires 8 characters
                        // (remove the whitespace if you want to do it in 6...)
    

    但是,这5个额外的角色节省了大量的认知负担,让我们不必去想“到底是什么?” n ?!", 更不用说定义和/或导入该方法的附加字符了。另一方面,任何编写过Java(或其他语言)的人都能立即理解 == null

    str == null 准确地传达了您测试的目的:引用为空,而不是空,或者可以转换为值为零的数字,或者其他内容。

    ==零 还具有有益的编译时属性,例如,它将阻止您使用原语操作数 int i = 0; if (i == null) {} i 是原始的,因此不能 null 鉴于 if (n(i)) {} Object ,为了最大限度地重用),因为

    Java是一种相当冗长的语言;有许多事情比这更冗长。就个人而言,我甚至不会注意到写作 ==零