实例:利用Java实现获取工程下所有继承了Cmd.class这个父类的所有Java文件,打印输出。
详细代码如下:
package common.file;
import java.io.File;
import common.cmd.Cmd;
public class SearchFile4Superclass {
public static void main(String[] args) throws Exception {
String packageName = "";
File root = new File(System.getProperty("user.dir") + "\\src");
String type = ".java";
Class<?> superClass = Cmd.class;
getFile(root, packageName, superClass, type.length());
}
public static void getFile(File folder, String packageName, Class<?> superClass, int typeLength) throws Exception {
File[] files = folder.listFiles();
for (int i = 0; i < files.length; i++) {
File file = files[i];
if (file.isDirectory()) {
getFile(file, packageName + file.getName() + ".", superClass, typeLength);
} else {
outFile(file.getName(), packageName, superClass, typeLength);
}
}
}
public static void outFile(String filename, String packageName, Class<?> superClass, int typeLength) {
try {
String name = filename.substring(0, filename.length() - typeLength);
if(Class.forName(packageName + name).getSuperclass()!=null
&& Class.forName(packageName + name).getSuperclass().getName().equals(superClass.getName())) {
System.out.println(filename);
}
} catch (Exception e) {
e.printStackTrace();
}
}
}