-7

如果有一个结构,例如一个数组,可能是null,对这个结构使用 for/in 循环是否有效?例如,

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

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

4

3 回答 3

7

不,你会得到一个NullPointerException

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

于 2013-10-15T07:32:15.577 回答
1

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

是的。它可能会崩溃。

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

我会简单地放置一个if检查返回的值someFunction()是否为null

if(a != null) {
    for (String s : a) { 
        //...
    }
}
于 2013-10-15T07:41:12.823 回答
1

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

否则,是的。你会得到一个NullPointerException

于 2013-10-15T07:33:45.033 回答