java中的数组长度是固定的。那么为什么Java允许大小为0的数组呢?
String[] strings = new String[0];
发布于 2011-01-06 14:45:04
它表示它是空的。也就是说,你可以循环遍历它,就像它有项一样,没有结果发生:
for(int k = 0; k < strings.length; k++){
// something
}
从而避免了检查的需要。如果有问题的数组是null
,则会发生异常,但在这种情况下,它什么也不做,这可能是合适的。
发布于 2011-01-06 14:44:48
有时返回一个零大小的数组比返回null要友好得多。
发布于 2011-01-06 15:11:00
考虑一下这个(Noon回答的更详细的解释):
public String[] getStrings() {
if( foo ) {
return null;
} else {
return new String[] {"bar, "baz"};
}
}
String[] strings = getStrings();
if (strings != null) {
for (String s : strings) {
blah(s);
}
}
现在将其与以下内容进行比较:
public String[] getStrings() {
if( foo ) {
return new String[0];
} else {
return new String[] {"bar, "baz"};
}
}
// the if block is not necessary anymore
String[] strings = getStrings();
for (String s : strings) {
blah(s);
}
这(返回空数组而不是null值)实际上是Java API设计界的最佳实践。
此外,在Java语言中,您可以将列表(例如ArrayList)转换为数组,并且只有将空列表转换为空数组才有意义。
https://stackoverflow.com/questions/4612471
复制相似问题