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