Java条件空指针检查时出现空指针异常

3
我有一个非常基本的二叉搜索树方法,如果当前二叉节点有一个右子节点,则简单地返回True,如果该右子节点指向空,则返回False。
public boolean hasRight(){
    if(right.element != null){
        return true;
    }else{
        return false;
    }

然而,每当我测试这段代码时,一旦我知道我将到达一个没有右子节点的节点,并期望我的代码只返回False时,Java会在该行抛出NullPointerException异常。
    if(right.element != null)

与我预期的返回False不同。

编辑:

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

public boolean hasRight(){
    if(right != null){
        return true;
    }else{
        return false;
    }
}

2
当您执行 if (right == null) {...} 时,它会显示什么? - AntonH
3个回答

10

那么right本身就是 null。在尝试访问它之前,首先检查它是否为空。

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

哎呀!完全没有意识到。谢谢。 - Yoink

5

如果right是null,你就无法访问right.element()

顺便说一下:你的方法可以更简单地写成

hasRight(){
   return right != null;
}

3
如果你收到了一个 "NullPointerException" 的错误提示,那么 "right" 应该是 "null"。你可以这样做:
if(right != null && right.element != null){
    return true;
}else{
    return false;
}

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接