需要帮助了解 Groovy 中的 Callsite 数组
Need help understanding Callsite arrays in Groovy
我在查看应用程序时遇到了这段代码。
groovy.util.ConfigObject config = (groovy.util.ConfigObject)org.codehaus.groovy.runtime.ScriptBytecodeAdapter.castToType(arrayOfCallSite[438].callGetProperty(this.grailsApplication), groovy.util.ConfigObject.class);
我的问题是,调用点数组是做什么的,它是如何初始化以包含稍后要检索的数据的?(在本例中是配置)我尝试阅读 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 代码,你会更好地理解它)
我在查看应用程序时遇到了这段代码。
groovy.util.ConfigObject config = (groovy.util.ConfigObject)org.codehaus.groovy.runtime.ScriptBytecodeAdapter.castToType(arrayOfCallSite[438].callGetProperty(this.grailsApplication), groovy.util.ConfigObject.class);
我的问题是,调用点数组是做什么的,它是如何初始化以包含稍后要检索的数据的?(在本例中是配置)我尝试阅读 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 代码,你会更好地理解它)