groovyc是如何工作的?

时间:2015-12-05 11:56:39

标签: groovy compilation

似乎groovy也支持编译模式,使用groovyc,如果我使用动态脚本调用方式运行以下代码,我将得到" String"方法叫做。

为什么我仍然得到" String"即使我使用groovyc编译代码?变量a的类型是"对象",所以我预计在编译代码后,我会得到"对象"函数叫。

Object a = "123"

def foo(Object a) {
    println "Object"
}

def foo(String a) {
    println "String"
}

foo(a)

1 个答案:

答案 0 :(得分:2)

以下是groovy-docs

的相关部分
  

在Groovy中,将在运行时选择要调用的方法。   这称为运行时调度或多方法。这意味着   将根据运行时参数的类型选择方法。   在Java中,这是opposite :在编译时选择方法,   基于声明的类型。

' 2中有一个示例代码。多方法' section,而不是在这里复制。

最后强制性链接到MrHaki' groovy goodness page on this topic