@SuppressWarnings("rawtypes") public static List<Class> listByClass(String package) { try { List<Class> clzs = new ArrayList<Class>(); String packagePath = package.replace(".", "/"); URL url = Thread.currentThread().getContextClassLoader().getResource(packagePath); File file = new File(url.getPath()); if(!file.exists()) throw new SysException("初始化的包名路徑不正確"); File []fs = file.listFiles(new FileFilter() { @Override public boolean accept(File pathname) { if(pathname.getName().endsWith(".class")) return true; return false; } }); for(File f:fs) { String cname = p+"."+FilenameUtils.getBaseName(f.getName()); Class clz = Class.forName(cname); clzs.add(clz); } return clzs; } catch (ClassNotFoundException e) { e.printStackTrace(); } return null; } @SuppressWarnings({ "rawtypes", "unchecked" }) public static List<Class> listByClassAnnotation(String package,Class an) { try { List<Class> clzs = new ArrayList<Class>(); String packagePath = package.replace(".", "/"); URL url = Thread.currentThread().getContextClassLoader().getResource(packagePath); File file = new File(url.getPath()); if(!file.exists()) throw new SysException("初始化的包名路徑不正確"); File []fs = file.listFiles(new FileFilter() { @Override public boolean accept(File pathname) { if(pathname.getName().endsWith(".class")) return true; return false; } }); for(File f:fs) { String cname = p+"."+FilenameUtils.getBaseName(f.getName()); Class clz = Class.forName(cname); if(clz.isAnnotationPresent(an)) clzs.add(clz); } return clzs; } catch (ClassNotFoundException e) { e.printStackTrace(); } return null; }
根據包名獲取Class對象
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.