gpt4 book ai didi

java - 如何列出 Java 方法/函数中的所有局部变量?

转载 作者:塔克拉玛干 更新时间:2023-11-03 05:18:26 25 4
gpt4 key购买 nike

我的主要问题:我知道您通常可以使用反射输出类字段,即使您不知道变量名称、类型,甚至不知道有多少。但是,假设我不知道变量名称是什么,是否有一种方法可以列出当前函数或当前范围内的所有变量?

换句话说:

int x = 5;
int y = 42;
// some more code
//Now I want to println x and y, but assuming I cannot use "x" or "y".

我也很乐意回答这个问题:假设我可以存储所有变量的名称,这有帮助吗?例如:

Set<String> varNames = new HashSet<String>();
int x = 5;
varNames.add("x");
int y = 42;
varNames.add("y");
// some more code
//Now with varNames, can I output x and y without using "x" or "y"?

我为什么要问这个?我正在使用 ANTLR 将 XYZ 语言翻译成 java,我想提供一种简单的方法来在任何时间点输出程序的整个状态。

第三种可能的解决方案我会很高兴:如果这在 Java 中是不可能的,有没有什么方法可以为访问调用函数并检查堆栈的函数编写字节码?这也可以解决问题。

如果 Java 具有与 Python 的 eval() 或 php 的 get_defined_vars() 等效的功能,那将是多么令人惊奇。

如果有所不同,我使用的是 Java 6,但适用于 Java 5、6 或 7 的任何东西都应该不错。

谢谢!

最佳答案

据我所知,你不能。至少,不是普通的 Java 代码。如果您能够在运行字节码之前通过某种后处理器运行字节码,并且假设您仍在使用包含的调试符号进行构建,那么您可以自动生成代码来完成它 - 但我不相信有通过反射访问当前栈帧中局部变量的任何方式。

关于java - 如何列出 Java 方法/函数中的所有局部变量?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12659117/

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