似乎groovy也支持编译模式,使用groovyc
,如果我使用动态脚本调用方式运行以下代码,我将得到" String"方法叫做。
为什么我仍然得到" String"即使我使用groovyc
编译代码?变量a的类型是"对象",所以我预计在编译代码后,我会得到"对象"函数叫。
Object a = "123"
def foo(Object a) {
println "Object"
}
def foo(String a) {
println "String"
}
foo(a)
答案 0 :(得分:2)
以下是groovy-docs
的相关部分在Groovy中,将在运行时选择要调用的方法。 这称为运行时调度或多方法。这意味着 将根据运行时参数的类型选择方法。 在Java中,这是opposite :在编译时选择方法, 基于声明的类型。
' 2中有一个示例代码。多方法' section,而不是在这里复制。
最后强制性链接到MrHaki' groovy goodness page on this topic