gpt4 book ai didi

java - 检索由Java中的函数执行的代码

转载 作者:行者123 更新时间:2023-11-30 08:53:11 25 4
gpt4 key购买 nike

我正在尝试分析一些 Java 代码,看看代码是否写得过于复杂。我从一个包含 Java 类内容的字符串开始。给定一个函数名,我想从那里检索该函数的“内部代码”。在这个例子中:

public class testClass{
public int testFunction(char x) throws Exception{
if(x=='a'){
return 1;
}else if(x=='{'){
return 2;
}else{
return 3;
}
}
public int testFunctionTwo(int y){
return y;
}
}

我想得到,当我调用 String code = getcode("testFunction"); 时,code 包含 if(x=='a' ){ ... 返回 3; }。我让输入代码变得格外丑陋,以演示在逐个字符分析时可能遇到的一些问题(因为 else if,大括号将不再匹配,由于抛出异常,函数声明不是 functionName{//contents } 等形式)

是否有可靠的方法获取testFunction的内容,还是我应该手动实现描述的所有问题?

最佳答案

你需要一个java解析器。我也曾与 QDox 合作过.它很容易使用。这里的例子:

import com.thoughtworks.qdox.JavaProjectBuilder;
import com.thoughtworks.qdox.model.JavaClass;
import com.thoughtworks.qdox.model.JavaMethod;

import java.io.File;
import java.io.IOException;

public class Parser {

public void parseFile() throws IOException {
File file = new File("/path/to/testClass.java");

JavaProjectBuilder builder = new JavaProjectBuilder();
builder.addSource(file);

for (JavaClass javaClass : builder.getClasses()) {
if (javaClass.getName().equals("testClass")) {
for (JavaMethod javaMethod : javaClass.getMethods()) {
if (javaMethod.getName().equals("testMethod")) {
System.out.println(javaMethod.getSourceCode());
}
}
}
}
}
}

关于java - 检索由Java中的函数执行的代码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29868404/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com