条件空检查的Java NullPointerException

Java NullPointerException on conditional null check

作为二进制搜索树的一部分,我有一个非常基本的方法,如果当前的二进制节点有一个正确的子节点,它只返回true;如果正确的子节点指向空,它返回false。

1
2
3
4
5
6
public boolean hasRight(){
    if(right.element != null){
        return true;
    }else{
        return false;
    }

然而,每当我测试这个代码时,当我知道我将到达一个没有正确的子节点的节点,并且期望我的代码返回false时,Java就抛出了一个Null PoExtExchange异常。

1
    if(right.element != null)

而不是像我期望的那样返回错误。

编辑:

修正了我的代码,只需在尝试获取right元素之前检查right本身是否为空。

1
2
3
4
5
6
7
public boolean hasRight(){
    if(right != null){
        return true;
    }else{
        return false;
    }
}


然后,它是rightnull。在N的第一个检查访问它的东西。

1
if (right != null && right.element != null){


如果您无法访问rightright.element()是零。

的BTW:你可以更容易的方法。

1
2
3
hasRight(){
   return right != null;
}


如果你找到一NullPointerException,然后rightnull。那么你可以这样做:

1
2
3
4
5
if(right != null && right.element != null){
    return true;
}else{
    return false;
}