是否有可能在不知道名字的情况下发现范围内的变量?

时间:2014-05-20 14:10:30

标签: reflection groovy scope

我得到了一个大型的Java&基于Groovy的系统。当执行groovy脚本时,Java会在Groovy进行交互的范围内放置一些有用的变量。麻烦的是我不知道这些变量是什么,甚至不知道它们的名字。有没有办法可以通过编写Groovy来检查它自己的范围并输出它找到的变量名称?

一旦我有一个名字变量,我就可以使用反射来找出我需要的任何东西。

2 个答案:

答案 0 :(得分:2)

所以看来神奇的是binding.getVariables()

我找到了一个函数,其中返回值变成我能看到并使用它的东西:

def r = [:]
binding.getVariables().entrySet().each {
    r[it.key] = it.value.getClass().getName()
}

返回我正在寻找的所有变量及其类型的地图。

答案 1 :(得分:0)

这对你有用吗?

def env = System.getenv()
//Print all the environment variables.
env.each{
     println it
}