当参数为空时,以下代码段是否会抛出 NPE?

public void doSomething(String string) {
    if (string.trim().equals("") || string==null) {
    [...]
    }
}

我在其他人的代码中发现了这一点(其他人应该比我更有经验)。由于我在使用这段代码时遇到了困难,我想问一下是否应该反转比较,或者 Java 编译器是否足够聪明以交换操作数。我无法直接控制此代码,也不会因为许多 catch 块而引发 NPE。

谢谢

最佳答案

是的。当 NullPointerExceptionstring 时,该代码片段将抛出 null 。建议将其更改为以下内容:

public void doSomething(String string) {
    if (string==null || string.trim().equals("")) {
        // ...
    }
}

关于OR比较的Java顺序,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/6426201/

10-10 13:59
查看更多