要获取 Java 项目中所有类名,可以通过以下步骤实现:
-
使用反射获取项目中所有的类:
//获得所有的class文件名
public class getclassfilename {
//这是一个main方法,是程序的入口:
public static void main(String[] args) {
List<String> classNames = new ArrayList<>();
try {
// 获取当前类加载器
ClassLoader classLoader = Thread.currentThread().getContextClassLoader();
// 获取当前类加载器加载的所有资源的 URL
URL url = classLoader.getResource("");
// 如果是文件系统的路径
if (url.getProtocol().equals("file")) {
String basePath = URLDecoder.decode(url.getFile(), "UTF-8");
File baseDir = new File(basePath);
// 递归扫描文件夹中的所有文件
scanClasses(classNames, baseDir, baseDir);
}
} catch (Exception e) {
e.printStackTrace();
}
for (String className : classNames) {
System.out.println(className);
}
}
// 递归扫描文件夹中的所有文件
private static void scanClasses(List<String> classNames, File baseDir, File currentFile) {
if (currentFile.isDirectory()) {
File[] files = currentFile.listFiles();
if (files != null && files.length > 0) {
for (File file : files) {
scanClasses(classNames, baseDir, file);
}
}
} else if (currentFile.isFile() && currentFile.getName().endsWith(".class")) {
String classPath = currentFile.getAbsolutePath().substring(baseDir.getAbsolutePath().length() + 1);
String className = classPath.replace(File.separator, ".").replace(".class", "");
classNames.add(className);
}
}
}

打印所有类名:
这样就能获取到 Java 项目中所有的类名了。请注意,该方法仅适用于在类文件是以文件系统形式存储的情况下,对于 JAR 文件中的类是无法获取到的。另外,如果项目中有很多类文件,可能会需要一定的时间来扫描和获取类名。
- C++实现文件内查找字符串
- IDEA项目名称后面出现中括号,模块Modules的名子和文件夹名称不同,可以右键修改名称也可以在File->Project Structure 修改Modules的Name(快捷键ctrl+Shift+Alt+s)
- 和利时MACS6通过dat文件实现任意时间范围与测点的历史数据提取与科研分析
- 类模板分文件编写
- Linux文件IO之二 [补档-2023-07-21]
- Linux文件IO之一 [补偿-2023-07-21]
- 十行python代码实现文件去重,去除重复文件的脚本
- vim编辑器实现左边目录右边是文件内容
- MakeFile文件的使用 [补档-2023-07-13]
- C语言文件操作函数
本栏目推荐文章