2010-05-06 2 views
0

Я хочу извлечь тело метода из исходного кода Java. Предположим, у меня есть следующий код:Метод извлечения тела из класса Java Исходный код

public class A{ 

    public void print(){ 
    System.out.println("Print This thing"); 
    System.out.println("Print This thing"); 
    System.out.println("Print This thing"); 
    } 

} 

Моя цель не извлечь имя метода (в данном случае печать), но и Боде метода (В этом случае заявление три печати внутри метода печати). Может ли кто-нибудь предложить, как я могу это сделать? Доступна ли их библиотека для этого.

ответ

0

Вот хак-иш, как я видел имя методы извлеченное:

String methodName = new Exception() 
          .getStackTrace()[0] 
          .getMethodName(); 

Кто-то с более сильным Java-фу может быть в состоянии дать более чистый подход, а также обеспечить способ извлечения тела метод.

+0

приятное умное решение, но оно не покажет тело метода тоже ... только имя. – oedo

0

Alt-Shift-I в eclipse попытается встроить вызов метода (с помощью курсора на вызов метода).

2

Если вы говорите об управлении исходным кодом, все IDE имеют некоторую степень поддержки рефакторинга, которая позволит вам выбрать одну или несколько строк кода и создать метод, состоящий из этих строк.

Если вы хотите сделать это программно, вам нужно проанализировать исходный файл. Вы можете написать лексер и парсер, но это большая работа, если вы не создаете IDE. Вы можете взглянуть на Annotation processing. Вероятно, это будет недостаточно далеко, если вы также не используете Compiler Tree API. Заметьте, однако, что, когда вы идете туда, вы отваживаетесь от пути «бежать куда угодно» и входите в «конкретную конкретную страну».

Если вы хотите манипулировать вещами во время работы, взгляните на BCEL или ASM и Java Agents.

+0

Thx для предложения. Я не хочу манипулировать вещами во время выполнения. Ввод будет простым исходным кодом Java. Я нашел, что Eclipse JDT предлагает обработку исходного кода. Я попробую это. Есть ли другая библиотека с открытым исходным кодом? –

+0

Существует несколько (инструмент рефакторинга google для java). RefactorIt (http://refactorit.sourceforge.net/), вероятно, лучше всего поддерживается. Он также доступен как плагин для NetBeans и Eclipse. –

Смежные вопросы