My main question: I know that you can generate class fields with reflection, even if you do not know the variable names, types, or even how many there are. However, is there a way to list all the variables in the current function or current scope, assuming I don't know what the variable names are?
In other words:
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".
I would also be pleased with the answer to this question: Say, I am allowed to store the names of all variables, does this help? eg:.
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"?
Why am I asking about this? I translated the XYZ language into java using ANTLR, and I would like to provide a simple method for displaying the entire state of a program at any given time.
The third possible solution that I would be happy with: if this is not possible in Java, is there any way to write bytecode for a function that visits the calling function and checks the stack? It would also solve the problem.
Which would be surprising if Java had the Python equivalent of eval() or php get_defined_vars() .
If that matters, I use Java 6, but everything that is needed for Java 5, 6, or 7 should be good.
Thanks!
source share