在下面的Groovy代码中,为了向fileAsString
类添加String
方法,有人可以解释'this'指的是什么。我认为这是调用fileAsString
方法的对象,但显然这实际上是委托引用的内容。
String.metaClass.fileAsString = {
this.class.getResourceAsStream(delegate).getText()
}
谢谢, 唐
答案 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"