当参数为空时,以下代码段是否会抛出 NPE?
public void doSomething(String string) {
if (string.trim().equals("") || string==null) {
[...]
}
}
我在其他人的代码中发现了这一点(其他人应该比我更有经验)。由于我在使用这段代码时遇到了困难,我想问一下是否应该反转比较,或者 Java 编译器是否足够聪明以交换操作数。我无法直接控制此代码,也不会因为许多 catch 块而引发 NPE。
谢谢
最佳答案
是的。当 NullPointerException
是 string
时,该代码片段将抛出 null
。建议将其更改为以下内容:
public void doSomething(String string) {
if (string==null || string.trim().equals("")) {
// ...
}
}
关于OR比较的Java顺序,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/6426201/