我的主要问题是:我知道可以通过反射通用地输出类字段,即使您不知道变量名称、类型或甚至数量。然而,是否有一种方法可以列出当前函数或当前范围内的所有变量,假设我不知道变量名字是什么?
换句话说:
为什么我在问这个问题?我正在使用ANTLR将XYZ语言翻译成Java,并且我想提供一种简单的方法,在任何时间点输出程序的整个状态。
第三种可能的解决方案:如果Java不支持该功能,是否有办法编写字节码以访问调用函数并检查堆栈?这也可以解决问题。
如果Java具有类似于Python的eval()或PHP的get_defined_vars()的等效功能,那将是非常棒的。
如果这有所区别,我使用的是Java 6,但适用于Java 5、6或7的任何内容都应该是好的。
谢谢!
换句话说:
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的任何内容都应该是好的。
谢谢!