2010-06-01 41 views
2

我做一个条件与一个值时,它是空的,当它不为空。 这个值为空的时间我得到了java.lang.NullPointerExceptionjava.lang.NullPointerException

我怎么能解决这个问题,以消除这个例外。 我需要条件时,值为空,当它不是。

感谢您的帮助。

+7

发布您的代码。 – 2010-06-01 14:14:52

+1

[什么是空指针异常,以及如何修复它?](http:// stackoverflow。com/questions/218384/what-is-null-pointer-exception-and-how-do-i-fix-it) – 2015-02-21 23:56:34

回答

7

当您尝试使用null变量调用方法时,您会得到一个NullPointerException。简单的例子:

String s = null; 
int len = s.length(); // NullPointerException because s is null 

所以,你应该检查变量null调用它的任何方法,例如前:

int len; 
if (s == null) { 
    len = 0; 
} 
else { 
    len = s.length(); // safe, s is never null when you get here 
} 

注意,一个NullPointerException通常很容易解决。仔细查看异常的堆栈跟踪,它会准确告诉您代码的哪一行发生异常。检查该代码行中可能是null,并检查是否在调用可能为null的某个方法。添加一张支票(或者以其他方式防止相关的东西可能是null)。

3

只需进行适当的检查,其值为null。有条件如

if (value == null) 

将不会抛出一个空 Refe PointerException。只有当您尝试访问任何null参考点才能获得例外。所以调用方法或访问对象的其他实例成员是没有问题的。

-1

确实混淆了这个问题,但是:

boolean isNull = true; if(value!= null){isNull = false;}

2

使用IF检查变量不为空,然后在ELSE代码块为空时使用ELSE代码块。

if (variable != null) 
{ 
    //code when object is not null 
} 
else 
{ 
    //code when object is null 
} 

空指针只有throwh当您尝试使用空值

variable.method(); 

但你应该总是避免在可能发生空指针的情况

+0

+1虽然我对最后一句话不满意。有时我们从API调用中获得'null'或者想要存储来自数据库查询的'NULL'结果。所以这并不总是可以避免的。 – 2010-06-01 14:36:20

1

正如其他海报所述,如果您不希望此处的引用为空,请修复导致引用在第一个引用中为空的缺陷。但是,如果它是有效的参考可能是零,也可以做到使用三元运算符(Java 5中的)以下

int len = (s == null) ? 0 : s.length; 

注:括号内是可选的,但让它在更多的可读性我意见。