4

我希望打印出我的 Java 项目中所有包中的所有类。例如,假设项目包含

Package1.Class1
Package1.Class2
Package1.Class3
Package2.Class1
Package2.Class2

我想打印出所有这些包和类。使用以下代码,我可以列出它们,但只有当我以以下方式引用时Package.Class c = new Package.Class();

这是我尝试使用的代码:

Package[] pa = Package.getPackages();
for (int i = 0; i < pa.length; i++) {
    Package p = pa[i];
    System.out.print("\"" + p.getName() + "\", ");
}

关于我如何做到这一点的任何想法?

谢谢大家

4

2 回答 2

3

由于类加载器的动态特性,没有简单的方法。

但是您可以查看反射库:http ://code.google.com/p/reflections/

这将允许您在当前类路径中查找类。

使用该库,您可以尝试以下操作:

 Reflections reflects = new Reflections("my.project.prefix");

 Set<Class<? extends Object>> allClasses = 
 reflects.getSubTypesOf(Object.class);
于 2013-01-01T19:38:36.367 回答
2

使用reflections或解析类路径,将其拆分为单独的文件夹和/或 jar 文件,遍历每个文件夹并列出包。但这比使用反射库要复杂得多。

于 2013-01-01T19:42:38.243 回答