如何在Java中初始化长度为0的String数组?

Ron*_*fin 127 java arrays initialization

该方法的Java Docs
String[] java.io.File.list(FilenameFilter filter)
在返回描述中包含以下内容:

如果目录为空或过滤器未接受任何名称,则该数组将为空.

我如何做类似的事情并初始化一个String数组(或任何其他数组)的长度为0?

Jon*_*eet 216

正如其他人所说,

new String[0]
Run Code Online (Sandbox Code Playgroud)

确实会创建一个空数组.但是,有一个关于数组的好处 - 它们的大小不能改变,所以你总是可以使用相同的空数组引用.所以在你的代码中,你可以使用:

private static final String[] EMPTY_ARRAY = new String[0];
Run Code Online (Sandbox Code Playgroud)

然后EMPTY_ARRAY每次需要时返回 - 每次都不需要创建新对象.

  • @Thomas:我理解你的观点,但对于这个特殊情况,我更喜欢更明确的形式.对我来说更清楚的是,它意味着"我想要一个包含0个元素的字符串数组",而不是"我想要一个包含此内容的数组 - 这是空的".只是个人偏好我想. (8认同)
  • 似乎每个人都喜欢打字:`private static final String [] EMPTY_ARRAY = {};` (7认同)
  • @Tony - 我必须使用 Java 可以推断类型的几个地方。:-) (2认同)

mau*_*ris 23

String[] str = new String[0];


Tho*_*ung 17

String[] str = {};
Run Code Online (Sandbox Code Playgroud)

return {};
Run Code Online (Sandbox Code Playgroud)

由于缺少类型信息,因此无法正常工作.

  • `return new String [] {};`和`return new String [0];`都可以. (10认同)

Ron*_*fin 13

好的,我实际上找到了答案,但我认为无论如何我都会将问题"导入"到SO中

String[] files = new String[0];
要么
int[] files = new int[0];

  • 感谢Jonathan的评论.您可能已经注意到我在其他人之前发布了这个答案(因此没有选择的答案).我也没有看到如何添加问题的答案可以提出更好的问题. (5认同)