我的主要问题:我知道你可以通过反射一般地输出类字段,即使你不知道变量名、类型,甚至不知道有多少。但是,有没有办法列出当前函数或当前范围内的所有变量,假设我不知道变量名是什么?
换句话说:
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 有 Pythoneval()
或 php 的get_defined_vars()
.
如果它有所作为,我使用的是 Java 6,但 Java 5、6 或 7 的任何东西都应该是好的。
谢谢!