我正在处理以下代码:
在'this.owner'中出现异常,这是在出生方法的关闭中。
class Mother {
int field = 1
int foo(){
return 2
}
Closure birth(param){
def local = 3
def closure = {caller -> [this,field,foo(),local,param,caller,this.owner]}
return closure
}
}
Mother m = new Mother();
closure = m.birth(4);
context = closure.call(this);
println context[0].class.name
assert context[1..4] == [1,2,3,4]
assert context[5] instanceof Script
assert context[6] instanceof Mother
fClosure = m.birth(4);
sClosure = m.birth(4);
assert false == fClosure.is(sClosure)
当运行结束时:
'this.owner'抓住了groovy.lang.MissingPropertyException:没有这样的 财产:班主:母亲
为什么?
答案 0 :(得分:0)
一切运作良好,请查看here,尤其是:
this
对应于定义闭包的封闭类
由于相应的类是Mother
并且没有owner
字段,也没有定义属性,因此MPE失败。如果在owner
类上定义Mother
它将运行(并且可能因另一个异常而失败)。