1.在Java中,方法只能定义为类的静态或实例方法。在groovy中,同样遵守这个规则。闭包是一种特殊的类。
2.groovy的类与Java类的语法的内涵几乎相同,groovy中的闭包比较与众不同。闭包本身是一个Closure类的对象。闭包拥有delegate、owner等内置对象。在闭包中的this表示它的外围类,可以通过this来调用外围类的属性和方法。delegate和owner与this不同,this是关键字,delegate和owner则是内置对象。在闭包中引用变量和方法时,对变量和方法的查找很奇怪。首先查找在owner对象中查找,然后再delegate中查找,最后才轮到自己的内置对象。例如
def a = {
def b = {
println delegate
}
}
此时的degate是b的内置对象。
def a = {
int delegate = 0
def b = {
println delegate
}
}
此时的delegate是owner中的delegate变量