Java查找工程下继承了某父类的文件

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/lms1719/article/details/51452105

实例:利用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();
		}
	}
	
}


猜你喜欢

转载自blog.csdn.net/lms1719/article/details/51452105