使用零长度的数组

Joh*_*nna 27 java arrays

例如,我们可以构造这样的数组:

 new ElementType[0];
Run Code Online (Sandbox Code Playgroud)

我看过这样的构造,但我不明白为什么这可能有用.

Igo*_*kon 44

一个例子.说,你有一个功能

public String[] getFileNames(String criteria) {
Run Code Online (Sandbox Code Playgroud)

获取一些文件名.想象一下,您没有找到满足条件的文件名.你有什么回报?您有2个选择 - 返回null0大小的数组.

具有0大小数组的变体更好,因为调用者不需要检查NULL并且可以以一致的方式处理数组 - 例如,在循环中(在这种情况下将为空).

Effective Java第27项中有一章


Jon*_*eet 15

null许多情况相比,它更容易使用,其中null显而易见的替代方案.

假设您想要返回一个Iterable<String>包含(比方说)相关文件名列表...但由于某种原因没有任何内容.您可以返回null以指示,但是调用者必须特殊情况.相反,如果返回一个空集合,调用者仍然可以使用增强的for循环:

for (String file : getFiles())
Run Code Online (Sandbox Code Playgroud)

那么为什么要使用空数组而不是空数字ArrayList或类似的呢?数组是固定大小的,因此空数组实际上是不可变的.这意味着您可以保留单个值并将其返回给您喜欢的任何人,因为他们知道他们不可能对此做任何事情.这在某些情况下非常有用.