Простой список всех стандартных классов и методов Java? - PullRequest
6 голосов
/ 16 мая 2009

Я создаю очень простой анализатор Java, чтобы искать некоторые конкретные модели использования. Это никоим образом не lex / yacc или любая другая форма интерпретатора / компилятора для целей запуска кода.

Когда я сталкиваюсь со словом или набором из двух слов, разделенных точкой («word.word»), я хотел бы знать, является ли это стандартным Java-классом (и методом), например, "Целое число", или какое-то определенное пользователем имя. Меня не интересует, были ли соответствующие классы включены / импортированы в код (то есть, если код хорошо компилируется), и крайние случаи пользовательских классов, которые переопределяют имена стандартных классов Java, также меня не интересуют. Другими словами: у меня все в порядке с ложным отрицанием, мне интересно только то, что я «в основном» прав.

Если есть место, где я мог бы найти простой список всех имен всех стандартных классов и методов Java, в форме, легко сохраняемой в текстовый файл или базу данных? (J2SE в порядке, но J2EE лучше). Я знаком с http://java.sun.com/j2se/ и т. Д., Но мне кажется, что мне нужно ужасное количество ручной работы, чтобы извлечь все имена оттуда. Кроме того, самый последний JDK не является необходимым, я могу жить с 1,4 или 1,5.

Пояснение: я работаю не на Java, а на Python, поэтому я не могу использовать специфичные для Java команды в своем механизме синтаксического анализа.

Спасибо

Ответы [ 6 ]

1 голос
/ 16 мая 2009

Также есть возможность проанализировать файл classlist из папки jre / lib или открыть файл jsse.jar, перечислить там все классы и составить их список в виде точек, разделенных точкой.

1 голос
/ 16 мая 2009

У IBM был инструмент для создания XML из JavaDocs, если я не ошибаюсь: http://www.ibm.com/developerworks/xml/library/x-tipjdoc/index.html

1 голос
/ 16 мая 2009

Если вы просто хотите создать список всех классов в Java и их методов (чтобы вы могли заполнить базу данных или файл XML), вы можете написать Eclipse-плагин, который просматривает всю модель JavaCore, и сканирует все его классы (например, путем поиска всех подтипов объекта). Затем перечислите все методы. Вы можете сделать это технически для любой библиотеки, включив ее в свой контекст.

1 голос
/ 16 мая 2009

Чтобы получить все классы и методы, вы можете посмотреть на индекс http://java.sun.com/javase/6/docs/api/index-files/index-1.html

Это будут десятки тысяч классов и методов, которые могут быть ошеломляющими.

Я предлагаю вместо этого использовать автозаполнение в вашей IDE. Это покажет вам все соответствующие классы / методы в зависимости от контекста. например скажем, у вас есть переменная

долгое время = система.

Это покажет вам все методы в системе, которые возвращают длинное значение, такое как

long time = System.nanoTime ();

Даже если вы знаете много методов / классов, это может сэкономить вам много печатания.

1 голос
/ 16 мая 2009

Что не так с javadoc ? В index перечислены все классы, методы и статические переменные. Вы можете, вероятно, grep для скобок.

0 голосов
/ 16 мая 2009

Когда я сталкиваюсь со словом или набором из двух слов, разделенных точкой («word.word»), я хотел бы знать, является ли это стандартным Java-классом (и методом), например, "Целое число", или какое-то определенное пользователем имя.

Если это то, что вам нужно, вы можете обойтись без (ограниченного) списка Java-классов, используя простое отражение: http://java.sun.com/developer/technicalArticles/ALT/Reflection/

try {
  Class.forName("word.word");
  System.out.println("This is a valid class!");
} catch (ClassNotFoundException e) {
  System.out.println("This is not a valid class.");
}

Нечего подобного должно быть достаточно для ваших целей, поскольку он добавил, что не ограничивается подмножеством классов и может расширяться любыми библиотеками на пути к классам.

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