/*未经本人同意,禁止转载。
做工程时,有时候需要扫描指定包,或者指定jar包,甚至扫描指定包下指定类,本文章详细讲解如何扫描,以及智能扫描,小编讲的很详细了仔细看。
以下讲解, 包扫描和jar包扫描,自动识别包扫描还是jar包扫描。
//下文需要一个ClassLoader,
private ClassLoader classLoader;
public PackageParse() {
}
//因为得到java文件后我们需要把该文件的类型返回给使用者,使用者有该类型,
//就可以得到成员,方法,注解,等等 ,所以提供一个抽象方法,给使用者返回class>类型
public abstract void dealClass(Class> klass);
//提供项目下的包比如 com.mec.util (或者提供com.mec.util.test.java)
//返回值为PackageParse也就是本类型,是为了外部方便使用而已,无其他意思。
public PackageParse scanRoot(String packName) {
//创建类加载器,不懂的可以百度学习下,以及classLoader.getResources
this.classLoader = Thread.currentThread().getContextClassLoader();
//packageName存放包名
String packageName = "";
//如果不含类即不是com.mec.util.test.java格式
if(!packName.contains(".java")) {
//将包名字变成路径
packageName = packName.replace(".", "/");
} else {
//是com.mec.util.test.java格式
//将路径变为com/mec/util
int lastIndex = packName.lastIndexOf(".");
int secandIndex