Пример кода, который можно легко запустить в GroovyConsole в разделе groovy 2.4.4:
import groovy.transform.CompileStatic
class Echo {
public void text(String txt) {
println txt
}
}
class Test {
private Echo echo = new Echo()
@CompileStatic
public void doStuff() {
Closure c = {
echo.text('hi')
}
c()
}
}
new Test().doStuff()
Он не работает с java.lang.ClassCastException: Test$_doStuff_closure1 cannot be cast to Test
.
Интересно, что если я удалю аннотацию @CompileStatic
или сделаю переменную-член не частной, она будет работать как ожидалось.
Изменить: зарегистрирована проблема JIRA GROOVY-7558