java中是否有python中的「dir」等價物,或者提供類似功能的庫(即作爲信息字符串輸出的對象和類的屬性)?等價於python「dir」的Java?
此問題與clojure的question類似,可能與Java Reflection有關,如question,這似乎是一個更復雜但相似的主題。
java中是否有python中的「dir」等價物,或者提供類似功能的庫(即作爲信息字符串輸出的對象和類的屬性)?等價於python「dir」的Java?
此問題與clojure的question類似,可能與Java Reflection有關,如question,這似乎是一個更復雜但相似的主題。
沒有什麼在完成正是什麼dir()
做標準庫,但你可以使用java.lang.reflect
相同的信息。具體來說,在the documentation on discovering class members中解釋了對班級成員的調查和發現。使用該API,您可以輕鬆找出您需要了解某個類的屬性的信息。
實際上,自己實現dir()
只需要定義一個方法來反省一個類的方法和字段,並組合一個信息集合或打印任何你想知道的信息。
dir()
在Java中的有用性有限,因爲Java不是交互式的,但如果您爲了教育/調查目的或應用程序邏輯需要它,反射API總是存在。
我在想如果使用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