java - 试图在java中将对象向下转换为文件

标签 java arraylist downcast

我写了下一段代码:

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;

}

如您所见,我有一个 FILE 的 ArrayList,然后我使用返回的 result.toArray 和 Object[] 数组,但它之前是 File,所以为什么我不能像我尝试的那样将它向下转换回 File在循环的第三行? 我收到下一个错误:

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)

我有哪些选择?

最佳答案

问题是数组的转换。不带参数的 toArray 创建对象数组,因为列表的类型信息在运行时丢失。

改变

File[] tempDir =  result.toArray();

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

关于java - 试图在java中将对象向下转换为文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5282736/

相关文章:

java - 如果我们有 Active MQ,为什么还需要 Mule?

java - Jsoup 检查字符串是否是有效的 HTML

java - 列出数组列表的一部分

java - 将 ArrayList 的子列表转换为 ArrayList

java - 将 XMI 文件导入 XML 项目错误 : Invalid byte 1 of 1-byte utf-8 sequence

java - 分离的实体传递到持久化 : one to one to relationship

java - ArrayList:获取最长字符串的长度,获取字符串的平均长度

swift - 如何在 Swift 中向下转换 UIViewController

c++ - 自动向下转换指向派生对象的指针

Java:使用强制转换从对象静态类中公开 protected 值