我根据另一个问题编写了一个非常简单的代码,如下所示:
它给我一个错误
java.lang.NullPointerException 第 5 行和第 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
. In
param == true
的类型true
is boolean
,因此左侧操作数也必须是boolean
。你正在传递一个Boolean
,它是一个对象,但可以自动拆箱为boolean
.
因此这相当于
param.booleanValue() == true
显然,如果param
is null
,上面抛出NullPointerException
.
为了避免自动拆箱的隐藏陷阱,您可以使用Boolean
对象:
if (Boolean.TRUE.equals(param))
return "a";
if (Boolean.FALSE.equals(param))
return "b";
return "c";
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)