我最近开始学习Groovy并发现不是一种自然的行为。
class BasicRouter {
int method_(first){
return 1;
}
int method_(int first){
return 2;
}
int method_(short second){
return 3;
}
int method_(Integer first){
return 4;
}
}
br = new BasicRouter()
int x = 1
assert br.method_(x) == 4
assert br.method_((int)29) == 2
为什么在第一种情况下我们传递一个int类型的变量,我们得到4而不是2?
我希望将调用方法int method_(int)
。
感谢。
答案 0 :(得分:3)
Groovy将对象用于所有内容
如果您使用CompileStatic
,则会更改@groovy.transform.CompileStatic
def fInt(int x) {new BasicRouter().method_(x)}
assert fInt(1) == 2