背景:
平时我们在编程当中,经常需要去在某个包下寻找对应的资源(资源是一些数据(图像、音频、文本等),可以被类代码以一种独立于代码位置的方式访问。),java提供了通过上下文加载器获得指定名称(资源的名称是表示资源的/分隔路径名。)下的资源的方法。那么我们用这种方法来编写一个包扫描的工具来处理来扫描指定的包,提供处理的抽象方法,等待使用工具的人去编写。
这里仅仅扫描包并提取出Class类,也可扫描Jar包。
下面是代码:
public abstract class PackageScaner {
public PackageScaner() {
}
//抽象方法,等待以后使用工具的人编写
public abstract void dealClass(Class<?> klass);
//扫描包
public void scanPackage(String packageName) {
//获得当前线程的上下文加载器
ClassLoader classLoader = Thread.currentThread().getContextClassLoader();
//将包名转化URL的文件路径的格式
String path = packageName.replace(".", "/");
try {
//用类加载器获得指定路径下的资源的URL对象的枚举
Enumeration<URL> urls = classLoader.getResources(path);
//遍历枚举
while (urls.hasMoreElements()) {
URL url = urls.nextEle