任何人都可以解释我是如何从这行代码中抛出空指针异常的:
if (data != null && data.isActive()) {
方法体isActive()只是:
public Boolean isActive()
{
return active;
}
提前致谢。
答案 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>