yot*_*moo 1 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;
}
Run Code Online (Sandbox Code Playgroud)
正如你可以看到我有一个FILE的ArrayList,然后我使用返回和Object []数组的result.toArray,但它之前是File,所以为什么我不能将它转发回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)
Run Code Online (Sandbox Code Playgroud)
我有什么选择?
问题是数组的强制转换.不带参数的toArray会创建一个对象数组,因为列表的类型信息在运行时会丢失.
更改
File[] tempDir = result.toArray();
Run Code Online (Sandbox Code Playgroud)
至
File[] tempDir = result.toArray(new File[result.size()]);
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
4082 次 |
| 最近记录: |