如何解决这个NullPointerException?我应该避免这种情况

时间:2017-01-03 17:56:40

标签: java android nullpointerexception

我正在构建一个应用程序,它使用来自每天更改的服务器的json数据。 昨天它运作得很好。但是,今天我收到以下错误:

  

java.lang.NullPointerException:尝试在空对象引用上调用虚方法'boolean java.lang.String.equals(java.lang.Object)'

在这行代码中:

{{1}}

对我来说,似乎if语句应该避免nullpointer异常......我是否会错过什么?

4 个答案:

答案 0 :(得分:0)

endDate变量为null,您无法在其上调用方法。这就是NullPointerException

的原因

要避免异常,只需验证变量是否为空,因为第一次检查是否if语句:

if(endDate != null && !endDate.equals("")) {
      dates.append(" t/m ").append(endDate);
}

答案 1 :(得分:0)

这意味着您的对象endDate为空。 在使用之前,您应该检查是否已在某处初始化它。 还要在if语句之前添加if语句,

if(endDate != null){
if(!endDate.equals("") && !endDate.equals("null")) {
      dates.append(" t/m ").append(endDate);
}
}

答案 2 :(得分:0)

乍一看,看起来你需要像这样检查endDate变量本身。无法在null对象上调用方法,因为基本上该方法在没有实例的情况下不存在。

if(endDate != null){
  if(!endDate.equals("") && !endDate.equals(null) && !endDate.equals("null")) {
      dates.append(" t/m ").append(endDate);
  }
}

答案 3 :(得分:0)

NullPointerException表示您的endDate变量持有对null的引用。使用.equals()将无法使用nul,因为您将在不存在的(null)对象上调用方法。 您可以使用assert语句来检查它(请参阅https://en.m.wikibooks.org/wiki/Java_Programming/Keywords/assert) 像这样: assert (endDate!=null);

或者,您可以使用if(endDate!=null);

但是,如果你真的想要解决问题,你应该用try语句和catch任何NPE包装块。