我想从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语句)。任何人都可以建议我该怎么办?他们的任何图书馆都可以这样做。
如果您正在讨论操作源代码,那么所有IDE都具有一定程度的重构支持,允许您选择一行或多行代码并创建由这些行组成的方法。
如果您想以编程方式执行此操作,则需要解析源文件。你可以写一个词法分析器和解析器,但除非你正在构建一个IDE,否则这是很多工作。你可能想看看Annotation processing。除非你还使用Compiler Tree API,否则这可能不会太远。但请注意,当你去那里时,你冒险离开“随处运行”的路径并进入“特定于实施”的土地。
如果你想在运行时操纵事物,那么看看BCEL或ASM和Java Agents。
这是我看到检索方法名称的黑客方法:
String methodName = new Exception()
.getStackTrace()[0]
.getMethodName();
拥有更强大Java-fu的人可能能够提供更清晰的方法,并提供一种方法来检索方法的主体。
eclipse中的Alt-Shift-I将尝试内联方法调用(将光标放在方法调用上)。