gpt4 book ai didi

java - 使用 javassist 获取局部变量?

转载 作者:太空宇宙 更新时间:2023-11-04 14:20:55 26 4
gpt4 key购买 nike

有没有办法使用 javassist 获取局部变量的名称?我的最终目标是在运行时获取对象哈希码。例如,如果我有一个类似的代码片段:

void try(){
Integer a = 123;
System.out.println(a);
}

我想对其进行检测,使其看起来像这样:

void try(){
Integer a = 123;
System.out.println(a.hashCode());
System.out.println(a);
}

所以,我试图获取局部变量名称“a”,然后将其重新插入代码中。有没有获得名字的方法,还有没有更好的方法来做同样的事情?

谢谢。

最佳答案

局部变量的名称a只是元信息。在运行时,该信息是依赖于索引的。对于非静态方法,局部变量将存储在包含引用的数组中:

------------
| 0 | 1 |
------------
| this | a |
------------

通过执行ALOAD_1指令来访问a。您需要做的是解析此类指令的字节码并重复它,调用它的哈希码方法并打印它。

关于java - 使用 javassist 获取局部变量?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27206781/

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