我的代码在以下行中出现空指针异常:
if (stringVariable.equals(null)){
在此语句之前,我声明了 stringVariable 并将其设置为数据库字段。
在此声明中,我试图检测该字段是否有null
值,但不幸的是它中断了!
有什么想法吗?
我的代码在以下行中出现空指针异常:
if (stringVariable.equals(null)){
在此语句之前,我声明了 stringVariable 并将其设置为数据库字段。
在此声明中,我试图检测该字段是否有null
值,但不幸的是它中断了!
有什么想法吗?
采用
stringVariable == null
测试是否stringVariable
是null
.
该equals
方法(以及所有其他方法)要求stringVariable
不是null
.
ifstringvariable
已经为 null,它不再作为String
对象存在,所以它甚至没有.equals
方法!因此,如果 whenstringvariable
为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) {
}
使用字符串时,可以付费查看Apache Commons StringUtils。
查看 apache 公共库总是值得的,因为它们有许多优化的实用程序(用于字符串、集合、日期等),这些实用程序往往比自制的要好。
equals() 方法不适用于 null 参数。
该方法需要有一个对象或字符串作为参数。
public boolean equals(Object anObject)
因为 null 不是对象。 null 是一个对象吗?.
另请参阅 java 7 文档,该文档说当且仅当传递的对象不为空时,equals 才会给出结果。
http://docs.oracle.com/javase/7/docs/api/java/lang/String.html#equals(java.lang.Object)