通过一个接口查找实现该接口的所有的实现类【工具包ClassUtils】
public class ClassUtils {
// 给一个接口,返回所有接口的实现类
public static List<Class> getAllClassByInterface(Class c) throws Exception {
List<Class> resultClassList = new ArrayList<>(); // 返回结果
if (c.isInterface()) { // 判断是否为接口
String name = c.getPackage().getName(); // 获取当前包名
List<Class> allClass =getClass(name);
for (int i = 0; i < allClass.size(); i++) {
if (c.isAssignableFrom(allClass.get(i))) {
if (!c.equals(allClass.get(i))) {
resultClassList.add(allClass.get(i));
}
}
}
} else {
System.out.println("该Class不是一个接口");
}
return resultClassList;
}
private static List<Class> getClass(String name) throws Exception {
ClassLoa