2014-04-08 43 views
1

有什麼辦法讓java編譯器列出編譯源代碼中使用的所有類?列出所有使用的類 - 編譯時間

例如,下面的代碼:

import foo.bar.Hello; 
import java.util.List; 

... 

Hello hello = ... 
String string = ... 
List list = ... 

我想獲得

java.lang.String 
java.util.List 
foo.bar.Hello 

編輯

  • 我希望它在編譯時間(編譯完成或之後) ,而不是運行時。

相關

+1

[反思](http://docs.oracle.com/javase/tutorial/reflect/)。 – Maroun

+0

聽說過反思? –

+0

可能重複[獲取運行Java應用程序時使用的所有類的列表?](http://stackoverflow.com/questions/1522329/obtaining-a-list-of-all-classes-used-while-running-一個java應用程序),雖然這獲得的信息在程序的執行過程中,這可能不夠好 –

回答

0

獲取的所有聲明的字段。它會回報你從那裏你可以得到有關的領域,如字段類型,字段名所需的信息Field陣列,申請修改等

欲瞭解更多信息瞭解Field JavaDoc

試試這個簡單的代碼

Class<?> clazz = null; 
    try { 
     clazz = Class.forName("com.x.y.z.ClassName"); 

     for (Field field : clazz.getDeclaredFields()) { 
      System.out.println(field.getName()); 
      System.out.println(field.getType()); 

     } 
    } catch (Throwable e) { 
     e.printStackTrace(); 
    } 
1

編譯期間是不可能的。你會有兩個選擇接近這個想法:

  • 使用一個程序,它在課程編譯後打印輸入。例如,您可以使用BCEL來編寫一個。

  • 如果您只對註釋感興趣,則可以嘗試在編譯期間使用APT添加註釋處理器。

+0

用於字節代碼工程庫 –

相關問題