Я не думаю, что это возможно в текущей форме ... Лучшее, что я могу придумать, это использовать Eval.x
примерно так:
public test() {
return Eval.x( this, '"${x.func()}"' )
}
Или обернуть выражение в замыкание (которое затем можно изменить делегатом)
public test() {
def clos = Eval.me( '{ -> func() }' )
clos.delegate = this
clos.resolveStrategy = Closure.DELEGATE_ONLY
clos.call()
}
Если вы хотите, чтобы это выполнялось не как Script, а как скомпилированное приложение, возможно, есть маршруты, которые вы можете использовать с GroovyScriptEngine и / или GroovyShell . (См .: Оценка сценариев с общим базовым классом )