翔仔老师帮忙看个递归的问题
来源:5-2 根据package获取类集合之通过类加载器获取资源信息
![](http://img1.sycdn.imooc.com/user/545865c30001a2d802200220-100-100.jpg)
慕哥6062902
2020-07-16
private static void extractClassFile(Set<Class<?>> classSet, File directory, String packageName) {
//1、递归终止条件
if (!directory.isDirectory()) {
return;
}
//2、遍历文件名,只添加目录和以.class结尾的文件名
String[] fileNames = directory.list((dir, name) -> {
if (dir.isDirectory()) {
return true;
} else if (name.endsWith(".class")) {
return true;
}
return false;
});
//3、遍历这些子文件,如果是目录则递归,否则直接加载(上一步已经把非.class结尾的给过滤掉了)
for (String fileName : fileNames) {
File file = new File(directory, fileName);
if (file.isDirectory()) {
extractClassFile(classSet, file, packageName + "." + fileName);
} else {
loadClass(packageName + "." + fileName, classSet);
}
}
}
测试的结果跟老师的代码一样(我写的应该也是可行的),只是感觉这样写对我来说更清晰理解。但是涉及到递归,我不知道怎样调试,确保自己的一定是正确的,老师能帮忙看看吗。
写回答
1回答
-
慕哥好,这个我看了哈,没问题的,同学调试的时候,可以直接打印packageName + "." + fileName 和你的目录结构对比一下,看看是否全对即可:)
012020-07-16
相似问题