獲取package下所有class的方法

1 使用guava

ClassPath classPath = ClassPath.from(Application.class.getClassLoader());
ImmutableSet<ClassPath.ClassInfo> clzs=classPath.getTopLevelClasses("package全路徑");
for(ClassPath.ClassInfo info: clzs){
    Class clz=info.load();
     //處理邏輯
     ......
             
}

2 從spring那學的

final String base="package全路徑";
final String folder=base.replace('.','/');
Enumeration<URL> urls=Application.class.getClassLoader().getResources(folder);
while (urls.hasMoreElements()){
    File file=new File(urls.nextElement().toURI());
    String[] classes=file.list((f,n)->n.endsWith(".class"));
    if(classes!=null){
         for(String clz :classes){
            String fullClz=base+"."+clz.substring(0,clz.length()-6);
            Class c=Class.forName(fullClz);
            //處理邏輯
            .......
          }
    }
}

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章