需要帮助了解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%))