Попытка уменьшить объект к файлу в Java - PullRequest
1 голос
/ 12 марта 2011

я написал следующий фрагмент кода:

private ArrayList<File> filter() {

    ArrayList<File> result = _filters.get(0).buildTree(_dir.listFiles());

    for (int i=1; i<_filters.size(); i++){
        File[] tempDir =  result.toArray();
        result = _filters.get(0).buildTree(tempDir);
    }

    return result;

}

Как вы можете видеть, у меня есть ArrayList из FILE, затем я использую result.toArray, который возвращает массив Object [], но раньше это был File,так почему я не могу вернуть его обратно в файл, как я пытаюсь сделать в 3-й строке цикла?я получаю следующую ошибку:

Exception in thread "main" java.lang.ClassCastException: [Ljava.lang.Object; cannot be cast to [Ljava.io.File;
at oop.ex1.filescript.Command.filter(Command.java:50)
at oop.ex1.filescript.Command.run(Command.java:28)

Какие у меня варианты?

1 Ответ

6 голосов
/ 12 марта 2011

Проблема в приведении массивов. toArray без параметров создает массив объектов, поскольку информация о типе списка теряется во время выполнения.

Изменить

File[] tempDir =  result.toArray();

до

File[] tempDir =  result.toArray(new File[result.size()]);
...