gpt4 book ai didi

java - 有没有办法识别 Java 方法中使用的变量?

转载 作者:塔克拉玛干 更新时间:2023-11-01 22:14:50 25 4
gpt4 key购买 nike

有没有办法能够确定特定 Java 方法所使用的变量?

例如,如果我有以下方法:

public void getResult(){
int result = value1 + value2;
}

然后我需要一个包含名称 result、value1 和 value2 的列表。

最佳答案

只有在解析生成的字节码时才能这样做。您可以使用字节码工程库,例如 ASM、Javassist 等。

据我了解,您的示例使用对象字段,这里是一个使用 Javassist 并打印给定类方法使用的所有字段的代码示例:

ClassFile cf = new ClassFile(new DataInputStream(className + ".class")));
for (Object m : cf.getMethods()) {
MethodInfo minfo = (MethodInfo)m;
CodeAttribute ca = minfo.getCodeAttribute();
for (CodeIterator ci = ca.iterator(); ci.hasNext();) {
int index = ci.next();
int op = ci.byteAt(index);
if (op == Opcode.GETYFIELD) {
int a1 = ci.s16bitAt(index + 1);
String fieldName = " " + cf.getConstPool().getFieldrefName(a1);
System.out.println("field name: " + fieldName);
}
}

关于java - 有没有办法识别 Java 方法中使用的变量?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9759095/

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