Передать метод как параметр в Groovy
Есть ли способ передать метод в качестве параметра в Groovy, не заключая его в замыкание? Кажется, для работы с функциями, но не методы. Например, учитывая следующее:
def foo(Closure c) {
c(arg1: "baz", arg2:"qux")
}
def bar(Map args) {
println('arg1: ' + args['arg1'])
println('arg2: ' + args['arg2'])
}
Это работает:
foo(bar)
Но еслиbar
это метод в классе:
class Quux {
def foo(Closure c) {
c(arg1: "baz", arg2:"qux")
}
def bar(Map args) {
println('arg1: ' + args['arg1'])
println('arg2: ' + args['arg2'])
}
def quuux() {
foo(bar)
}
}
new Quux().quuux()
Это не сНет такого свойства: bar для класса: Quux.
Если я изменю метод, чтобы обернутьbar
в завершение это работает, но кажется излишне многословным:
def quuux() {
foo({ args -> bar(args) })
}
Есть ли более чистый способ?