在python for java中是否有等效的“dir”,或者提供类似功能的库(即对象和类的属性输出为信息性字符串)?
这个问题类似于question对于clojure,可能与Java反射有关,就像在question中一样,这似乎是一个更复杂但相似的主题。
答案 0 :(得分:4)
标准库中没有任何内容可以完全 完成dir()
的内容,但您可以使用java.lang.reflect
获取相同的信息。具体而言,在the documentation on discovering class members中解释了调查和发现班级成员的问题。使用该API,您可以轻松找到关于类的属性需要了解的内容。
事实上,自己实现dir()
只需要定义一个方法来反省类的方法和字段,并组装信息的集合或打印您想知道的任何信息。
dir()
在Java中的用处有限,因为Java不是交互式的,但如果您需要它用于教育/调查目的或应用程序逻辑,那么反射API总是在那里。
答案 1 :(得分: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