[英]How to instantiate a Java abstract class with a constructor parameter with a groovy closure
[英]How to give groovy closure parameter a type
我知道闭包有隐式类型 'it' 这样我们就可以定义一个函数
def int foo(int num, Closure closure){
def sum = num
sum+=closure.call(1)
}
然后我把这个函数称为
def total = foo(1,{it+1})
print total
//prints 2
我的问题是如何强制闭包采用 int 类型的显式参数。 就像我们如何在 Java 中定义 lambda 函数一样。
您可以使用@ClosureParam
用其参数规范来注释您的Closure
参数声明。 在您的特定情况下:
import groovy.transform.stc.ClosureParams
import groovy.transform.stc.FirstParam
int foo(int num, @ClosureParams(FirstParam) Closure closure) {
def sum = num
sum += closure.call(5)
}
其中FirstParam
是一个提示,表示closure
的参数类型等于此方法的第一个参数。
希望这可以帮助。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.