Java эквивалентно Python "DIR"? - PullRequest
       0

Java эквивалентно Python "DIR"?

3 голосов
/ 10 марта 2011

Есть ли эквивалент в "dir" в python для java или в библиотеке, которая обеспечивает аналогичную функциональность (т.е. свойства объектов и классов выводятся в виде информативных строк)?

Этот вопрос похож на этот вопрос для clojure и, вероятно, как-то связан с Java Reflection, как в этом вопросе , который, кажется, касается более сложной, но похожей темы. .

Ответы [ 2 ]

4 голосов
/ 10 марта 2011

В стандартной библиотеке нет ничего, что выполняло бы точно , что dir() делает, но вы можете получить ту же информацию, используя java.lang.reflect.В частности, исследование и обнаружение членов класса объясняется в документации по обнаружению членов класса .Используя этот API, вы можете легко узнать, что вам нужно знать об атрибутах класса.

На самом деле, реализация dir() самостоятельно - это просто вопрос определения метода, который анализирует методы и полякласс и либо собирает набор информации, либо печатает любую информацию, которую вы хотели бы знать.

dir() имеет ограниченную полезность в Java, потому что Java не интерактивна, но если она вам нужна для обученияВ целях или для логики приложения API отражения всегда существует.

2 голосов
/ 29 октября 2015

Я думал, что использование 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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...