Groovy - @DelegatesTo(strategy = Closure.DELEGATE_ONLY,...)意外行为

时间:2017-03-30 23:31:26

标签: groovy delegates annotations closures

在此代码中,断言失败:

class Foo { 
   def foo() { 'foo' } 
}

def foo() { 'foo2' }

def bar(@DelegatesTo(strategy=Closure.DELEGATE_ONLY, value=Foo) Closure c) {
   c.delegate = new Foo()
   c()
}

assert bar { foo() } == 'foo'

我期望断言通过,因为策略被指定为Closure.DELEGATE_ONLY,所以它应该只尝试使用foo()的委托解析new Foo(),否则抛出异常。我认为我不必在c.resolveStrategy = Closure.DELEGATE_ONLY函数体中再次明确指定策略。这看起来似乎很冗长。这是预期的行为吗?

0 个答案:

没有答案