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

该方法的 Java 文档
String[] java.io.File.list(FilenameFilter filter)
在报税表的说明中包括:

如果目录为空,或者筛选器未接受任何名称,则数组将为空。

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

360346 次浏览

好吧,我实际上找到了答案,但认为我会’导入’的问题到所以无论如何

String[] files = new String[0];
或者
int[] files = new int[0];

String[] str = new String[0];

String[] str = {};

但是

return {};

由于类型信息丢失,无法正常工作。

正如其他人所说,

new String[0]

将确实创建一个空数组。然而,数组有一个好处——它们的大小不能改变,所以您总是可以使用相同的空数组引用。因此,在代码中,您可以使用:

private static final String[] EMPTY_ARRAY = new String[0];

然后在每次需要时返回 EMPTY_ARRAY-不需要每次都创建一个新对象。

创建一个不返回 null 的函数,而是返回一个空数组,您可以通过下面的代码来理解它。

    public static String[] getJavaFileNameList(File inputDir) {
String[] files = inputDir.list(new FilenameFilter() {
@Override
public boolean accept(File current, String name) {
return new File(current, name).isFile() && (name.endsWith("java"));
}
});


return files == null ? new String[0] : files;
}

可以使用 org.apache.commanss.lang3中的 ArrayUtils.EMPTY _ STRING _ ARRAY

import org.apache.commons.lang3.ArrayUtils;


class Scratch {
public static void main(String[] args) {
String[] strings = ArrayUtils.EMPTY_STRING_ARRAY;
}
}

你可以用下面的东西-

1. String[] str = new String[0];
2. String[] str = ArrayUtils.EMPTY_STRING_ARRAY;<br>

两者都是一样的。