我希望打印出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() + "\", ");
}
关于我如何做到这一点的任何想法?
全部谢谢
答案 0 :(得分:3)
由于类加载器的动态特性,没有简单的方法。
但是你可以查看反射库:http://code.google.com/p/reflections/
这将允许您在当前类路径中查找类。
使用该库,您可以尝试这样的事情:
Reflections reflects = new Reflections("my.project.prefix");
Set<Class<? extends Object>> allClasses =
reflects.getSubTypesOf(Object.class);
答案 1 :(得分:2)
使用reflections
,或解析类路径,将其拆分为单个文件夹和/或jar文件,遍历每个文件并列出软件包。但这比使用反射库更复杂。