例如,我们可以像这样构造一个数组:
new ElementType[0];我见过这样的构造,但我不明白为什么这可能有用。
发布于 2009-06-24 06:29:38
举个例子。比如说,你有一个函数
public String[] getFileNames(String criteria) {来获取一些文件名。假设您找不到任何满足条件的文件名。你会返回什么?您有两个选择-返回null或0大小的数组。
具有0大小数组的变体更好,因为您的调用者不需要检查NULL,并且可以以一致的方式处理数组-例如,在循环中(在本例中为空)。
在Effective Java, Item 27上有一个关于这方面的章节
发布于 2009-06-24 06:28:28
在许多情况下,它比null更容易使用,而null是显而易见的替代方案。
假设您想返回一个包含(比方说)相关文件名列表的Iterable<String> ...但由于某种原因,没有任何一个。你可以返回null来指明这一点,但是调用者必须在特殊情况下这样做。相反,如果返回一个空集合,调用方仍然可以使用增强的for循环:
for (String file : getFiles())那么为什么要使用空数组而不是空的ArrayList或类似的东西呢?数组的大小是固定的,因此空数组实际上是不可变的。这意味着您可以保留单个值并将其返回给您喜欢的任何人,因为您知道他们不可能对它做任何事情。这在某些情况下非常有用。
发布于 2009-06-24 07:06:48
它是null的替代品,因为您在使用它之前不需要检查null。更正式地说,它是special case design pattern的一个特例(也可以检查空对象)。
另一个惯用的用法是collections toArray
List<String> list = new ... ;
// fill the list
String[] array = list.toArray(new String[0]); https://stackoverflow.com/questions/1036666
复制相似问题