2013-01-01 27 views
4

我正在打印出我的Java項目中所有包中的所有類。例如,說包含的項目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() + "\", "); 
} 

上我該怎麼辦有什麼想法這個?

謝謝全部

+1

*當你需要它嗎?在運行時或打包之前(比如說在編譯時)? – Raffaele

+2

重複? http://stackoverflow.com/questions/520328/can-you-find-all-classes-in-a-package-using-reflection – Kent

回答

3

由於類加載器的動態特性,沒有簡單的方法。

但是你可以看看感言庫:http://code.google.com/p/reflections/

,讓您查找在當前的classpath的類。

與該庫,你可以嘗試這樣的事:

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

Set<Class<? extends Object>> allClasses = 
reflects.getSubTypesOf(Object.class); 
2

圍棋與reflections,或解析類路徑,其拆分成單獨的文件夾和/或jar文件,走他們每個人,並列出了包。但這比使用反射庫更復雜。

+0

+1爲步行通過FS方式。我只是想要發佈相同的.. – Kent

+0

@Kent我自己使用反射庫,但我只是想澄清,有其他的選擇。 Spring的類路徑掃描技術也讓人想起。 –

相關問題