奇怪的nullpointer异常

时间:2012-03-13 21:49:09

标签: java android

我的超类中有这个方法,它扩展了活动:

protected boolean isStopAvailable(BusStop stop) {
    if (stop == null) {
        stop = new BusStop();
    } else if (stop.getName().length() > 0) {
        return true;
    } else {
        return false;
    }
    return false;
}

我在我的子类isStopAvailable(object)中调用它;在启动对象后,如何在使用对象中的方法时获取空指针异常怎么可能?

5 个答案:

答案 0 :(得分:3)

stop.getName()返回null

else if (stop.getName() != null && stop.getName().length() > 0)

应该解决它

答案 1 :(得分:3)

如果getName()返回null,您将获得NPE。您正在尝试对null对象执行长度函数,因此此异常。您应该添加另一个else if支票:

...
else if (stop.getName() == null) {
    // do something
}

希望这有帮助。

答案 2 :(得分:0)

stop.getName()返回null,这就是你得到NPE的原因。

答案 3 :(得分:0)

我敢打赌name中的stop字段为空。您的第一个检查是查看对象是否为空,而不是其中的字段。因此,如果stop.getName()返回null,则在尝试调用长度时会得到NPE

答案 4 :(得分:0)

我建议将NPE放在这一行:else if (stop.getName().length() > 0)
这可能是因为您已检查对象BusStop是否为null但您未检查stop.getName()是否为null

做类似的事情:

else if (stop.getName() == null) {
   // set stop.setName()
}

希望这有帮助,玩得开心!