if 语句检查空值,但仍引发 NullPointerException
2022-09-01 04:13:09
在此代码中。
public class Test {
public static void testFun(String str) {
if (str == null | str.length() == 0) {
System.out.println("String is empty");
} else {
System.out.println("String is not empty");
}
}
public static void main(String [] args) {
testFun(null);
}
}
我们将一个值传递给函数 。编译正常,但给出了一个在运行时,这是我没想到的。为什么它引发异常,而不是评估条件并打印“字符串为空”?null
testFun
NullPointerException
if
true
假设要传递到的实际参数的值是从某个进程生成的。假设该进程错误地返回了一个值,并将其提供给 testFun。如果是这种情况,如何验证传递给函数的值是否为空?testFun
null
一种(奇怪的)解决方案可能是将形式参数分配给函数中的某个变量,然后对其进行测试。但是,如果有许多变量传递给函数,这可能会变得乏味且不可行。那么,在这种情况下如何检查空值呢?