需要帮助理解Groovy中的Callsite数组

时间:2017-07-02 23:17:48

标签: 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的文档但是没有任何有用的描述解释它的作用,文档中只显示方法和属性列表。

1 个答案:

答案 0 :(得分:1)

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

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

handlers:
  - url: /.*
    script: index.php
    login: admin

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

c

所以,你的代码大致对应于这个groovy代码:

ScriptBytecodeAdapter.setGroovyObjectProperty(localObject, Script61235.class, this, (String)"cfg");
ConfigObject c = (ConfigObject)ScriptBytecodeAdapter
    .castToType(arrayOfCallSite[2].callGroovyObjectGetProperty(this), ConfigObject.class)

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

更好地找到原始的groovy代码,你会更好地理解它)