Groovy 缺少method的匿名类

Groovy 缺少method的匿名类,groovy,anonymous-types,anonymous-class,Groovy,Anonymous Types,Anonymous Class,对于我正在编写的DSL,有时我希望返回一个虚拟对象,它忽略所有调用 这项工作: class Dummy { def methodMissing(String name, args) { print "Ignoring: "+name+" "+args } } def foo(guardCondition) { if (guardCondition) return new Dummy() // ... } foo(true).with { bar('

对于我正在编写的DSL,有时我希望返回一个虚拟对象,它忽略所有调用

这项工作:

class Dummy {
    def methodMissing(String name, args) { print "Ignoring: "+name+" "+args }
}

def foo(guardCondition) {

    if (guardCondition)
        return new Dummy()

    // ...
}

foo(true).with { bar('baz') }
但是,如果我尝试使用匿名类,结果会出现一个错误,如
没有方法签名:.bar()适用于参数类型:(java.lang.String)值:[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 } ]

这方面存在一个未解决的问题:。事实上,它在内部类中不起作用,不管匿名与否