我根据另一个问题写了一个非常简单的代码,这里是:
它抛出一个错误
java.lang.NullPointerException line 5 and 17
我不知道我做错了什么。
public class Main {
public static String bool(Boolean param){
if(param == true){ (line 5)
return "a";
}else if(param == false){
return "b";
}
return "c";
}
public static void main(String[] args){
System.out.println(bool(true));
System.out.println(bool(null)); (line 17)
System.out.println(bool(false));
}
}
最佳答案
null
不能自动拆箱为原始 boolean
值,当您尝试将它与 true
进行比较时会发生这种情况。在
param == true
true
的类型是boolean
,因此左侧操作数也必须是boolean
。您正在传递一个 Boolean
,它是一个对象,但可以自动拆箱为 boolean
。
因此这相当于
param.booleanValue() == true
显然,如果 param
是 null
,上面的代码将抛出 NullPointerException
。
为了避免自动拆箱的隐患,您可以改为使用 Boolean
对象:
if (Boolean.TRUE.equals(param))
return "a";
if (Boolean.FALSE.equals(param))
return "b";
return "c";
关于带有 boolean 值的 java.lang.NullPointerException,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25824269/