如果门空着,我想将飞机停在阵列中的门上。如果登机口已被占用,那么我将把飞机停在一个空着的登机口,如我的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
,则它们被认为都存储在同一位置(无处),因此它们相等。