Java 在与null进行==比较时获取NullPointerException

Java 在与null进行==比较时获取NullPointerException,java,nullpointerexception,Java,Nullpointerexception,我对当前的程序有困难。当我尝试检查节点(对象)是否为空时,我得到了一个NullPointerException,我认为您可以这样做。我在这个if语句中得到了一个例外 else if(direction == 0) { cursor = cursor.getParent(); if(cursor.getRight() != null) direction = 1; else

我对当前的程序有困难。当我尝试检查节点(对象)是否为空时,我得到了一个NullPointerException,我认为您可以这样做。我在这个if语句中得到了一个例外

        else if(direction == 0) {
            cursor = cursor.getParent();
            if(cursor.getRight() != null)
                direction = 1;
            else
                direction = 0;
        }
我在第三行“if(cursor.getRight()!=null)”中得到了异常,我尝试了多种方法来编写它,但仍然得到了相同的异常。('if(null!=cursor.getRight)'和'if(!(null==cursor.getRight())'
getRight()方法返回下一个节点(对象)的实例,并在该对象初始化时初始化为null。

我想您可能会发现“cursor.getParent()”返回null,从而在第二行将“cursor”设置为null。然后,当第三行尝试调用“getRight()”时在null对象上,您会得到一个NullPointerException。

第二行getParent上的游标可能被设置为null,然后您试图访问null元素的方法。在检查Cursor.getRight()是否为null之前,请先检查游标是否为null

获得
NullPointerException
的原因是
cursor
设置为
null
,因此当您尝试
cursor.getRight()
时,它的计算结果为
null.getRight()
,因此出现异常

我建议您尝试以下代码:

else if(direction == 0) {
            cursor = cursor.getParent();
            if(cursor!=null && cursor.getRight() != null)
                direction = 1;
            else
                direction = 0;
        }

cursor.getParent();
可能返回null,因此NPE。那么,如果
cursor
没有父对象(即“最高”的光标(如果您喜欢这样命名)),会发生什么情况?然后
cursor
null
cursor.getRight()
将导致出现
NullPointerException
。是的,谢谢。我的
游标。getParent()
返回null,因为没有正确设置每个节点的父节点。
else if(direction == 0) {
            cursor = cursor.getParent();
            if(cursor.getRight() != null)
                direction = 1;
            else
                direction = 0;
        }
else if(direction == 0) {
            cursor = cursor.getParent();
            if(cursor!=null && cursor.getRight() != null)
                direction = 1;
            else
                direction = 0;
        }