从一类Java源代码中提取方法体

时间:2010-05-06 20:02:18

标签: java methods extraction

我想从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 个答案:

答案 0 :(得分:2)

如果您正在讨论操纵源代码,那么所有IDE都有一定程度的重构支持,允许您选择一行或多行代码并创建一个由这些行组成的方法。

如果要以编程方式执行此操作,则需要解析源文件。你可以写一个词法分析器和解析器,但除非你正在构建一个IDE,否则这是很多工作。您可能需要查看Annotation processing。除非你也使用Compiler Tree API,否则这可能不会太远。但请注意,当你去那里时,你冒险离开“随处运行”的路径并进入“特定于实施”的土地。

如果您希望在运行时操作内容,请查看BCELASMJava Agents

答案 1 :(得分:0)

以下是我看到检索方法名称的黑客方法:

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

拥有更强大Java-fu的人可能能够提供更清晰的方法,并提供一种方法来检索方法的主体。

答案 2 :(得分:0)

在eclipse中的Alt-Shift-I将尝试内联方法调用(将光标放在方法调用上)。