0
Для DSL Я пишу, я хотел бы иногда возвращать фиктивный объект, который просто игнорирует все вызовы.Анонимный класс с методомMissing
Это работает:
class Dummy {
def methodMissing(String name, args) { print "Ignoring: "+name+" "+args }
}
def foo(guardCondition) {
if (guardCondition)
return new Dummy()
// ...
}
foo(true).with { bar('baz') }
но если я пытаюсь использовать анонимный класс результат ошибки как No signature of method: <filename>.bar() is applicable for argument types: (java.lang.String) values: [baz]
Именно это не работает:
if (guardCondition)
return new Object() { def methodMissing(String name, args) { print "Ignoring: "+name+" "+args } }
ни делает работа «мешка»:
if (guardCondition)
return [ methodMissing : { name, args -> print "Ignoring: "+name+" "+args } ]