在 Groovy 中,是否有可能获取闭包的调用对象?

9

是否有可能在闭包的执行上下文中获取调用闭包的Object的引用?

例如:

public class Example {

    public Example(){
        def a = {return this};
        def b = [];

        b.metaClass.a = a;

        println b.a();
    }
}

我希望这次执行返回b,而不是Example的实例。

1个回答

13
闭包调用时可以将其所在的对象引用为delegate。示例:
def a = { return delegate }
def b = []

b.metaClass.a = a

assert b.a() == b

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接