【问题标题】:Java equivalent to python "dir"?Java相当于python“dir”?
【发布时间】:2015-10-29 18:43:53
【问题描述】:

在 python 中是否有与“dir”等效的 java 或提供类似功能的库(即作为信息字符串输出的对象和类的属性)?

这个问题与 clojure 的 question 类似,并且可能与 question 中的 Java 反射有关,这似乎是一个更复杂但相似的主题。

【问题讨论】:

    标签: java reflection


    【解决方案1】:

    标准库中没有什么可以完全完成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

      【讨论】:

        猜你喜欢
        • 2020-12-04
        • 2016-08-25
        • 2011-07-29
        • 2011-05-29
        • 2011-03-13
        • 2018-06-15
        • 2011-04-26
        • 1970-01-01
        相关资源
        最近更新 更多