2

fileAsString在以下为类添加方法的Groovy 代码中String,有人可以解释一下“this”到底指的是什么。我认为它fileAsString是调用方法的对象,但显然这实际上是委托所指的。

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

谢谢,唐

4

1 回答 1

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"
于 2009-03-20T05:46:22.343 回答