![](/img/trans.png)
[英]Why do I get this NullPointerException: a null object reference error?
[英]Why do I get a NullPointerException when comparing a String with null?
我的代码使用nullpointerexception破坏了以下行:
if (stringVariable.equals(null)){
在此声明之前,我声明了stringVariable并将其设置为数据库字段。
在这个声明中,我试图检测该字段是否具有null
值,但不幸的是它会中断!
有什么想法吗?
使用
stringVariable == null
测试stringVariable
是否为null
。
equals
方法(以及所有其他方法)要求stringVariable
不为null
。
如果stringvariable
已经为null,则它不再作为String
对象存在,因此它甚至不会有.equals
方法! 所以在stringvariable
为 null的情况下,你真正做的是null.equals(null)
,此时你将得到NullPointerException
因为null
没有.equals()
方法。
在一个可能为null的变量上调用一个方法,无论是equals()还是其他方法都是不明智的。 这就是为什么人们通常做的事情:
if ( var != null && var.method(something) ) {
// var.method() was true
} else {
// var is null or var.method is false
}
在你的特殊情况下,这样就足够了
if (stringVariable == null) {
}
使用Strings时,可以付费查看Apache Commons StringUtils 。
检查apache commons库总是值得的,因为它们有很多优化的实用程序(对于字符串,集合,日期等),这些实用程序往往比自制的更好。
equals()方法不适用于null参数。
该方法需要将对象或字符串作为参数。
public boolean equals(Object anObject)
由于null不是对象。 对象是null吗? 。
另请参阅java 7文档,该文档说当当且仅当传递的对象不为null时,equals才会给出结果。
http://docs.oracle.com/javase/7/docs/api/java/lang/String.html#equals(java.lang.Object)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.