下面的简单代码解释了我的困惑:
class Main {
static void f(Function<Float, Float> c) {
println(c.apply(0.0f))
}
static void main(String[] args) {
Closure<String> c = {"hi"}
f(c)
}
}
我不知道为什么编译器没有抱怨Closure<String>
不适合Function<Float, Float>
。似乎我可以传递任何东西给f()
。
1条答案
按热度按时间92dk7w1h1#
下面的代码
印刷品
1.闭包不实现函数。所以,当你把闭包赋给函数时- groovy试图通过一个函数接口来委托闭包。它将是动态的,即使你使用compile static...