检查null是否为Java空指针异常

luk*_*uke 1 java

任何人都可以解释我是如何从这行代码中抛出空指针异常的:

if (data != null && data.isActive()) {
Run Code Online (Sandbox Code Playgroud)

方法体isActive()只是:

public Boolean isActive() 
{
  return active;
}
Run Code Online (Sandbox Code Playgroud)

提前致谢.

小智 14

在java中,有一种叫做autoboxing的东西,当原始值被对象类型包装时,反之亦然.

所以,在你的代码中有一个方法:

public Boolean isActive() 
{
  return active;
}
Run Code Online (Sandbox Code Playgroud)

请注意,您正在返回Boolean(对象类型),而不是boolean(基本类型).

返回值将在if语句中使用.

if (data != null && data.isActive()) {
Run Code Online (Sandbox Code Playgroud)

当java data.isActive()在您的if语句中遇到它时,它会尝试将布尔值转换为原始布尔值,以将其应用于您的逻辑操作.

但是你activeisActive()方法中的变量是null,所以java无法将这个变量解包为boolean原始值,你得到了Null pointer exception.

  • 无论谁拒绝我的回答,请发表评论,让我知道,我的假设有什么问题.谢谢. (6认同)