在此代码中,断言失败:
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
函数体中再次明确指定策略。这看起来似乎很冗长。这是预期的行为吗?