Javassist 捕获特定语句的局部变量值

Javassist capture local variable values for specific statements

我正在尝试捕获分支和循环语句的条件表达式中涉及的变量值,例如:

if (a + b < c - 5) { // here, capture value of a, b and c
    // if body
}

for (int i = 0; i / x < 4 ; i++){ // here, capture value of i and x on exit of loop
    // for body
}

Javassist 是否像为 FieldAccess、MethodCall、Handler 等一样为 if、switch、for 和 while 语句提供 ExpressionEditor?

有没有其他方法可以解决这个问题? (我有兴趣在运行时这样做)

我真的不认为这是可能的,使用 Javassist 你不能深入访问字节码。

您的需求过于细化,库不支持它,正如您从 this 文档中看到的那样,您可以访问作为方法参数或 return 方法的所有变量方法,但您找不到有关所有其他变量的任何信息。

如果我可以建议您看一下 ASM. I am not an expert about it but, as I know and according to this 文档应该提供对字节码的更深入的了解。