如何在Groovy中定义@CompileStatic兼容闭包?
我有一个类,其闭包定义为:如何在Groovy中定义@CompileStatic兼容闭包?,groovy,closures,groovy++,Groovy,Closures,Groovy++,我有一个类,其闭包定义为: void everyPixel( closure ){ for( def x : 0..width-1 ) for( def y : 0..height-1 ) closure( x, y ) } 但如果我将@CompileStatic注释应用于它,它将不会编译它在添加闭包之前所做的操作,并显示以下消息: Groovyc:[静态类型检查]-找不到匹配的方法java.lang.Objectcalljava.lang.In
void everyPixel( closure ){
for( def x : 0..width-1 )
for( def y : 0..height-1 )
closure( x, y )
}
但如果我将@CompileStatic注释应用于它,它将不会编译它在添加闭包之前所做的操作,并显示以下消息:
Groovyc:[静态类型检查]-找不到匹配的方法java.lang.Objectcalljava.lang.Integer,java.lang.Integer。请检查声明的类型是否正确以及方法是否存在
如何为它创建一个类型签名,以便它能够静态编译?到目前为止,我在谷歌上的所有点击都是关于如何传递闭包,而不是如何定义一个接受闭包的方法-/ 你只需要告诉它闭包就是闭包:
void everyPixel( Closure closure ){
for( x in 0..<width )
for( y in 0..<height )
closure( x, y )
}