2011-03-10 208 views
3

java中是否有python中的「dir」等價物,或者提供類似功能的庫(即作爲信息字符串輸出的對象和類的屬性)?等價於python「dir」的Java?

此問題與clojure的question類似,可能與Java Reflection有關,如question,這似乎是一個更復雜但相似的主題。

回答

4

沒有什麼在完成正是什麼dir()做標準庫,但你可以使用java.lang.reflect相同的信息。具體來說,在the documentation on discovering class members中解釋了對班級成員的調查和發現。使用該API,您可以輕鬆找出您需要了解某個類的屬性的信息。

實際上,自己實現dir()只需要定義一個方法來反省一個類的方法和字段,並組合一個信息集合或打印任何你想知道的信息。

dir()在Java中的有用性有限,因爲Java不是交互式的,但如果您爲了教育/調查目的或應用程序邏輯需要它,反射API總是存在。

2

我在想如果使用javap會是一個不錯的選擇。該男子說 javap - The Java Class File Disassembler

,我可以看到內置的方法,通過

javap java.lang.Double | grep -i int 
public static final int MAX_EXPONENT; 
public static final int MIN_EXPONENT; 
public static final int SIZE; 
public int intValue(); 
public int hashCode(); 
public int compareTo(java.lang.Double); 
public static int compare(double, double); 
public int compareTo(java.lang.Object); 

System.out.println()

javap -c java.lang.System | grep -i out 
public static final java.io.PrintStream out; 
public static void setOut(java.io.PrintStream); 
    4: invokestatic #4     // Method setOut0:(Ljava/io/PrintStream;)V 
    8: putstatic  #98     // Field out:Ljava/io/PrintStream; 

,然後做javap java.io.PrintStream