如果门空着,我想将飞机停在阵列中的门上。如果登机口已被占用,那么我将把飞机停在一个空着的登机口,如我的else语句所做的那样。运行测试器时,在if语句的行上收到java.lang.NullPointerException。我不知道为什么。任何建议表示赞赏。

public void parkPlane(Plane plane){
    for (int i = 0; i < this.plane.length; ++i) {
        if(this.plane[i].equals(null)){ //java.lang.NullPointerException pointing to this line.
            plane.setGateNumber(i);
        }
        else{
            plane.setGateNumber(getVacantGate());
        }
    }
}

最佳答案

如果为null,则在其上调用equals将引发异常。请改用==

问题在于,如果该对象为null,则它尚未被初始化(即使已声明)。在null上调用任何方法都会引发NullPointerException。但是,==比较对象在内存中的位置。如果它们存储在同一位置,则它们是完全相同的对象。如果两个对象都是null,则它们被认为都存储在同一位置(无处),因此它们相等。

10-07 19:21
查看更多