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

问题描述 投票:0回答:3

我想从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),而是提取方法的bode(在本例中是print方法中的三个print语句)。任何人都可以建议我该怎么办?他们的任何图书馆都可以这样做。

java methods extraction
3个回答
2
投票

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

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

如果你想在运行时操纵事物,那么看看BCELASMJava Agents


0
投票

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

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

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


0
投票

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

© www.soinside.com 2019 - 2024. All rights reserved.