是使用评估的顺序来检查空值的不良做法?

The*_*ray 0 java null operator-precedence

如果我希望对一个字符串执行两次检查,它不是null,并且它不是0长度,我可以这样做 -

if(string != null) {
    if(string.length() > 0) {
        //Do something
    }
}
Run Code Online (Sandbox Code Playgroud)

或者我可以做到这一点

if(string != null && string.length() > 0) {
    //Do something
}
Run Code Online (Sandbox Code Playgroud)

首先执行第一次检查,第二次比较不会发生,并且不会抛出NullPointerException.

第二种方法是否可以保证在所有情况下都有效?如果是这样,使用它会被视为不良做法吗?

uoy*_*maz 5

不,它完全没问题,保证在所有情况下都能正常工作.

Java规范的参考:https://docs.oracle.com/javase/specs/jls/se7/html/jls-15.html#jls-15.7