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

use*_*026 1 java

是否有更短的方法来检查字符串/对象是否为null?

    String str = someMethodThatReturnsStringOrNull(someOthreObject);
    if(str == null) { System.out.println("Empty"); }
Run Code Online (Sandbox Code Playgroud)

比如JS风格:

    if(str) { System.out.println("Empty"); }
Run Code Online (Sandbox Code Playgroud)

And*_*ner 10

没有.

Java要求条件语句的表达式必须是类型boolean,或者可以自动转换为a 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...)
Run Code Online (Sandbox Code Playgroud)

但是这5个额外的角色可以节省大量的认知负担,想知道"究竟是n什么?!",更不用说定义和/或导入该方法的其他特征了.另一方面,任何编写任何Java(或者可能是其他语言)的人都会立即理解== null.

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

== null还有一个有益的编译时属性,例如它会阻止你使用原始操作数,例如int i = 0; if (i == null) {}是一个编译时错误,因为它i是原始的,因此不能null,而是if (n(i)) {}允许的(假设形式参数类型是Object,你想要它,为了最大限度地重复使用),因为i它将被装箱.

Java是一种相当冗长的语言; 有许多事情比这更冗长.就个人而言,我甚至不会注意到写作== null,这是我肌肉记忆的条件.

不要担心,并学会喜欢语法.