如何解决这个nullpointerexception?我认为应该避免这种情况

yizd12fk  于 2021-07-12  发布在  Java
关注(0)|答案(4)|浏览(233)

这个问题在这里已经有答案了

什么是nullpointerexception,如何修复它(12个答案)
四年前关门了。
我正在构建一个应用程序,它使用每天变化的服务器上的json数据。昨天它工作得很好。然而,今天我得到了以下错误:
java.lang.nullpointerexception:尝试对空对象引用调用虚拟方法“boolean java.lang.string.equals(java.lang.object)”
在此代码行:

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

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

yvfmudvl

yvfmudvl1#

乍一看,似乎需要像这样对enddate变量本身进行null检查。不能对空对象调用方法,因为基本上没有示例的方法是不存在的。

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

jbose2ul2#

这个 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。

sdnqo3pr

sdnqo3pr3#

这个 endDate 变量为null,不能对其调用方法。这就是 NullPointerException .
为了避免异常,只需验证变量是否不是null,因为第一个检查 if 声明:

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

gg0vcinb4#

意思是你的目标 endDate 为空。你应该在使用它之前检查一下你是否在某处初始化过它。在if语句之前添加if语句,

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

相关问题