packagepri.lime.main;importjava.io.File;importjava.io.IOException;importjava.net.URL;importjava.util.ArrayList;importjava.util.Enumeration;/*** 查找指定路径下面实现指定接口的全部类
*
*@authorLiang
*
* 2017年5月9日*/
public classClassUtil {
@SuppressWarnings({"rawtypes", "unchecked"})public static ArrayListgetAllClassByInterface(Class clazz) {
ArrayList list = new ArrayList<>();//判断是否是一个接口
if(clazz.isInterface()) {try{
ArrayList allClass =getAllClass(clazz.getPackage().getName());/*** 循环判断路径下的所有类是否实现了指定的接口 并且排除接口类自己*/
for (int i = 0; i < allClass.size(); i++) {/*** 判断是不是同一个接口*/
//isAssignableFrom:判定此 Class 对象所表示的类或接口与指定的 Class//参数所表示的类或接口是否相同,或是否是其超类或超接口
if(clazz.isAssignableFrom(allClass.get(i))) {if (!clazz.equals(allClass.get(i))) {//自身并不加进去
list.add(allClass.get(i));