62,615
社区成员
发帖
与我相关
我的任务
分享
package io;
import java.io.File;
public class GetAllSubclass {
public static void main(String[] args) {
File rootFile = new File(GetAllSubclass.class.getResource("/").getFile().replaceFirst("/", ""));
setSonList(rootFile, rootFile.getPath() + "\\", GetAllSubclass.class);
}
public static <T> void setSonList(File rootFile, String parentDirectory, Class<T> parentClass) {
if (rootFile.isDirectory()) {
File[] files = rootFile.listFiles();
for (File file : files) {
setSonList(file, parentDirectory, parentClass);
}
} else {
String className = null;
try {
if (rootFile.getPath().indexOf(".class") != -1) {
className = rootFile.getPath().replace(parentDirectory, "").replace(".class", "").replace("\\", ".");
Class<?> classObject = Class.forName(className);
classObject.asSubclass(parentClass);
System.out.println(className + " 是 " + parentClass + " 的子类");
}
} catch (ClassNotFoundException e) {
System.err.println("找不到类 " + className);
} catch (ClassCastException e) {
System.err.println(className + " 不是 " + parentClass + " 的子类");
}
}
}
}
class Sub1 extends GetAllSubclass {
}
class Sub2 extends GetAllSubclass {
}