【发布时间】:2015-02-12 06:55:22
【问题描述】:
我有这段代码是在一个名为FileUtils 的类中实现的,它听起来像。
它所做的只是遍历一个文件并将该文件夹下的每个文件夹放在ArrayList 中,因此它就像在任何将返回内容的文件上调用.listFiles() 方法一样。
private static ArrayList<File> classFileList = new ArrayList<File>();
public static ArrayList<File> listFiles(File dir) {
if (!dir.isDirectory() || !dir.exists())
return null;
for (File file : dir.listFiles()) {
classFileList.add(file);
listFiles(file);
}
return classFileList;
}
上面的代码工作正常,但它需要一个类变量ArrayList 才能工作。
如果我在方法内创建ArrayList,那么每次调用它时都会重置它,并且只返回最后一个文件。但是通过我现在的设置,如果我多次调用该方法,则列表包含每个文件的重复项。
使用方法变量或在调用后重置类变量。
【问题讨论】:
标签: java recursion arraylist class-variables