使用零长度的数组
例如,我们可以像这样构造这样一个数组:
new ElementType[0];
我看到了这样的结构,但我不明白为什么这可能是有用的。
一个例子。 说,你有一个function
public String[] getFileNames(String criteria) {
得到一些文件名。 想象一下,你没有find任何符合标准的文件名。 你回来了什么? 您有2个select – 返回null或0大小的数组 。
具有0大小的数组的变体是更好的,因为你的调用者不需要检查NULL,并且可以以一致的方式处理数组 – 例如在循环(在这种情况下将是空的)中。
有效的Java,第27项有一章
在许多情况下,使用null
比使用null
更容易,其中null
是明显的select。
假设你想返回一个包含(比如说)相关文件名列表的Iterable<String>
…但是由于某种原因没有任何东西。 你可以返回null
来表示,但是那么调用者必须特别说明这一点。 相反,如果你返回一个空的集合,调用者仍然可以使用增强的for循环:
for (String file : getFiles())
那么为什么使用空数组而不是空ArrayList
或类似的东西呢? 数组是固定的大小,所以一个空数组是有效的不变的。 这意味着你可以保留一个单一的价值,并将其返还给任何你喜欢的人,知道他们不可能用它做任何事情。 在某些情况下这可能非常有用。
它是null的替代品,因为在使用它之前不需要检查null。 更正式地说,它是特殊情况devise模式的一个特殊情况(也检查Null对象)。
另一个习惯用法是收集toArray :
List<String> list = new ... ; // fill the list String[] array = list.toArray(new String[0]);