Извлечение тела методов из класса исходного кода Java - PullRequest
0 голосов
/ 07 мая 2010

Я хочу извлечь тело метода из исходного кода 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");
  }

}

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

Ответы [ 3 ]

2 голосов
/ 07 мая 2010

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

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

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

0 голосов
/ 07 мая 2010

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

0 голосов
/ 07 мая 2010

Вот как выглядит взломанный способ получения имени метода:

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

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

...