메소드의 Java Docs
String[] java.io.File.list(FilenameFilter filter)
는이를 리턴 설명에 포함합니다.
디렉토리가 비어 있거나 필터에서 이름을 승인하지 않으면 배열이 비어 있습니다.
비슷한 작업을 수행하고 문자열 배열 (또는 그 문제에 대한 다른 배열)을 길이가 0으로 초기화하는 방법은 무엇입니까?
답변
다른 사람들이 말했듯이
new String[0]
실제로 빈 배열을 만듭니다. 그러나 배열에 대한 좋은 점이 있습니다. 크기는 변경할 수 없으므로 항상 동일한 빈 배열 참조를 사용할 수 있습니다. 따라서 코드에서 다음을 사용할 수 있습니다.
private static final String[] EMPTY_ARRAY = new String[0];
그런 다음 필요할 때 EMPTY_ARRAY
마다 반환하면 매번 새 객체를 만들 필요가 없습니다.
답변
String[] str = new String[0];
?
답변
String[] str = {};
그러나
return {};
유형 정보가 누락되어 작동하지 않습니다.
답변
그래, 나는 실제로 답을 찾았지만 어쨌든 질문을 ‘가져 오기’로 생각했다.
String[] files = new String[0];
또는
int[] files = new int[0];
답변
org.apache.commons.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;
}
}
답변
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;
}