增强的循环和可能的空值

时间:2013-10-15 07:31:28

标签: java for-loop null

如果存在结构,例如,可能是null的数组,对于此结构使用for / in循环是否有效?例如,

String[] a = someFunction(); //some function which might return null  
for (String s : a) {  
 //do something  
}

我想知道这段代码是否会崩溃。

3 个答案:

答案 0 :(得分:7)

没有。你会得到NullPointerException

在这种情况下,我总是尝试返回空集合,而不是null集合。这样我就不用担心在没有事先null检查的情况下进行迭代(你可能会认为这是一个 NullObject 模式)

答案 1 :(得分:1)

如果可能,让someFunction()返回一个空数组。

否则,是的。你会得到NullPointerException

答案 2 :(得分:1)

  

我想知道这段代码是否会崩溃。

是。它可能会崩溃。

请注意,如果您返回一个空集合,这可能会破坏您的逻辑。当您没有返回非空值时,您必须确保不会发生意外情况。

我只需添加一个if来检查someFunction()返回的值是否为null

if(a != null) {
    for (String s : a) { 
        //...
    }
}