Groovy元编程中的'this'

时间:2009-03-20 00:40:44

标签: groovy metaprogramming

在下面的Groovy代码中,为了向fileAsString类添加String方法,有人可以解释'this'指的是什么。我认为这是调用fileAsString方法的对象,但显然这实际上是委托引用的内容。

String.metaClass.fileAsString = {
    this.class.getResourceAsStream(delegate).getText()
}

谢谢, 唐

1 个答案:

答案 0 :(得分:2)

新定义的方法是一个闭包,因此'this'与定义方法时的含义相同。通常'this'将引用定义方法的对象,如下所示:

class Foo {
    def meta() {
        String.metaClass.bar = {
            println(this.class)   // 'this' refers to the instance of Foo
        }
    }

    def main() {
        meta()
        new String().bar()
    }
}
new Foo().main()                  // prints "class Foo"