[java] Java에서 길이가 0 인 문자열 배열을 어떻게 초기화 할 수 있습니까?

메소드의 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;
}


답변