我根据另一个问题写了一个简单的简单代码,这里是:
它给我一个错误
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));
}
}
Run Code Online (Sandbox Code Playgroud)
Mar*_*nik 31
null无法自动取消装箱到原始boolean值,这是当您尝试将其与之比较时发生的情况true.在
param == true
Run Code Online (Sandbox Code Playgroud)
类型true是boolean,因此左手操作数也必须是a boolean.您传入的Boolean是一个对象,但可以自动取消装箱boolean.
因此这相当于
param.booleanValue() == true
Run Code Online (Sandbox Code Playgroud)
显然,如果param是null,则上述抛出NullPointerException.
为了避免自动拆箱的隐藏陷阱,您可以改为使用Boolean对象:
if (Boolean.TRUE.equals(param))
return "a";
if (Boolean.FALSE.equals(param))
return "b";
return "c";
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
12728 次 |
| 最近记录: |