Java 如何解决此NullPointerException?我认为应该避免这种情况

Java 如何解决此NullPointerException?我认为应该避免这种情况,java,android,nullpointerexception,Java,Android,Nullpointerexception,我正在构建一个应用程序,它使用每天变化的服务器上的json数据。 昨天它工作得很好。但是,今天我遇到了以下错误: java.lang.NullPointerException:尝试在空对象引用上调用虚拟方法“boolean java.lang.String.equals(java.lang.Object)” 在代码的这一行: 在我看来,if语句应该避免nullpointer异常。。。我遗漏了什么吗?变量endDate为空,您不能对其调用方法。这就是产生NullPointerException的原

我正在构建一个应用程序,它使用每天变化的服务器上的json数据。 昨天它工作得很好。但是,今天我遇到了以下错误:

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

在代码的这一行:


在我看来,if语句应该避免nullpointer异常。。。我遗漏了什么吗?

变量
endDate
为空,您不能对其调用方法。这就是产生
NullPointerException
的原因

为了避免异常,只需验证变量是否不为null,作为第一个检查
if
语句:

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

这意味着您的对象
endDate
为空。 在使用它之前,您应该检查是否在某个地方对它进行了初始化。 在if语句之前添加if语句,

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

乍一看,您需要像下面这样对endDate变量本身进行null检查。无法对空对象调用方法,因为基本上,如果没有实例,该方法是不存在的

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

NullPointerException
表示
endDate
变量包含对
null
的引用。使用
.equals()
无法处理nul,因为您将对不存在的(null)对象调用方法。 您可以使用assert语句检查它(请参阅) 这样地:
assert(endDate!=null)

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


然而,如果你真的想解决问题,你应该用
try
语句和
catch
任何NPE来包装这个块。

if(endDate!=null)…我知道这不是一个简洁的实现,但它的设计目的不仅仅是为了向你展示这个概念。谢谢大家,很抱歉重复!这是固定的任何关于为什么答案被否决的建议都会有帮助。我完全同意
if(endDate != null){
  if(!endDate.equals("") && !endDate.equals(null) && !endDate.equals("null")) {
      dates.append(" t/m ").append(endDate);
  }
}