检查null

时间:2015-05-05 14:08:30

标签: java

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

if (data != null && data.isActive()) {

方法体isActive()只是:

public Boolean isActive() 
{
  return active;
}

提前致谢。

1 个答案:

答案 0 :(得分:14)

在java中,有一个名为autoboxing的东西,当原始值被对象类型包装时,反之亦然。

因此,在您的代码中有一个方法:

public Boolean isActive() 
{
  return active;
}

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

并且返回值将在if语句中使用。

if (data != null && data.isActive()) {

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

但是active方法中的isActive()变量为null,因此java无法将此变量解包为boolean原始值,并且获得Null pointer exception。< / p>