@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;
}
转载于:https://blog.51cto.com/yaomy/1743040