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