需要帮助了解Groovy中的Callsite数组吗

需要帮助了解Groovy中的Callsite数组吗,groovy,call,Groovy,Call,我在查看应用程序时遇到了这段代码 groovy.util.ConfigObject config = (groovy.util.ConfigObject)org.codehaus.groovy.runtime.ScriptBytecodeAdapter.castToType(arrayOfCallSite[438].callGetProperty(this.grailsApplication), groovy.util.ConfigObject.class); 我的问题是,callsite数组

我在查看应用程序时遇到了这段代码

groovy.util.ConfigObject config = (groovy.util.ConfigObject)org.codehaus.groovy.runtime.ScriptBytecodeAdapter.castToType(arrayOfCallSite[438].callGetProperty(this.grailsApplication), groovy.util.ConfigObject.class);

我的问题是,callsite数组是做什么的,它是如何初始化以包含稍后要检索的数据的?(在本例中是配置)我试图阅读groovy的文档,但是没有任何有用的描述来解释它的功能,文档中只显示了一系列方法和属性。

它看起来像是反编译的groovy代码或从groovy生成的java代码

让我们看看简单的groovy脚本:

cfg = new ConfigObject()
ConfigObject c = cfg
将脚本变量
cfg
值赋值为java中定义的
c
变量的本地类型的行如下所示:

ScriptBytecodeAdapter.setGroovyObjectProperty(localObject, Script61235.class, this, (String)"cfg");
ConfigObject c = (ConfigObject)ScriptBytecodeAdapter
    .castToType(arrayOfCallSite[2].callGroovyObjectGetProperty(this), ConfigObject.class)
因此,您的代码大致对应于此groovy代码:

ConfigObject config = this.grailsApplication.xxx
其中,
xxx
我们在您的问题中没有看到


最好找到原始的groovy代码,这样您就会更好地理解它)

这是否意味着开发人员永远不会直接使用Callsite数组?诚然,我是通过反编译类文件获得上述代码的,因为它不是开源的。正如我所知,从普通groovy代码中使用
arrayOfCallSite
是不可能的。但这不是100%))