翔仔老师帮忙看个递归的问题

来源:5-2 根据package获取类集合之通过类加载器获取资源信息

慕哥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回答

翔仔

2020-07-16

慕哥好,这个我看了哈,没问题的,同学调试的时候,可以直接打印packageName + "." + fileName  和你的目录结构对比一下,看看是否全对即可:)

0
1
慕哥6062902
谢谢老师
2020-07-16
共1条回复

剑指Java自研框架,决胜Spring源码

快速入门Spring核心源码+从零开发自研框架

1498 学习 · 495 问题

查看课程