在查看应用程序时,我遇到了这段代码。
groovy.util.ConfigObject config = (groovy.util.ConfigObject)org.codehaus.groovy.runtime.ScriptBytecodeAdapter.castToType(arrayOfCallSite[438].callGetProperty(this.grailsApplication), groovy.util.ConfigObject.class);
我的问题是,callsite数组做了什么以及如何初始化以包含稍后要检索的数据?(在这种情况下是配置)我尝试阅读groovy的文档但是没有任何有用的描述解释它的作用,文档中只显示方法和属性列表。
答案 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代码,你会更好地理解它)