Groovy:如果使用@CompileStatic,则需要调用操作符
根据文档: http : //docs.groovy-lang.org/next/html/documentation/#_call_operator
call operator()用于隐式调用名为call的方法。 对于定义调用方法的任何对象,您可以省略.call部分,而使用调用操作符。
我有一个接口:
interface StringCallback { void call(String value) }
后来在我的代码中:
void doSomething(StringCallback callback) { .... callback(result) }
那么,为什么如果我使用@CompileStatic它需要我把它写成callback.call(result)
? 编译器不应该关心转换吗? 有什么办法可以使它工作(使用@CompileStatic时有这个功能)。
使用IntelliJ(v.2017.1)和Groovy v.2.5.0-alpha-1
注意:我使用接口而不是Closure的原因是使它可以从Kotlin和Java“调用”。