O Groovy devolve a diversão ao Java. Aqui está um dos truques que uso para delegar ações com base em valores enum.
enum Super {
BATMAN({arg1 ->
println "I live in $arg1 city"
}),
SUPERMAN({arg1 ->
println "I was born in $arg1"
}),
SHAKTIMAN({arg1 ->
println "I live in $arg1 city"
});
Closure cl
Super(Closure cl) {
this.cl = cl
}
def address(def arg){
return cl.call(arg)
}
}
agora você pode chamar o endereço do método neste enum.
Super.SUPERMAN.address("Krypton");
Super.BATMAN.address("Gotham");