以下代码工作正常
def json = new JsonBuilder()
json {
writeNumbers(delegate, "myNumbers")
}
println json.toPrettyString()
def writeNumbers(json, name) {
json."$name" {
"w" 32
"h" 32
}
}但是,一旦我在另一个“范围”中移动或添加一个writeNumbers调用,我就会得到一个堆栈溢出异常;就像这样
def json = new JsonBuilder()
json {
scopes {
writeNumbers(delegate, "myNumbers")
}
}
println json.toPrettyString()
def writeNumbers(json, name) {
json."$name" {
"w" 32
"h" 32
}
}结果:
Caught: java.lang.StackOverflowError
java.lang.StackOverflowError为什么会发生这种事,我怎么才能绕过它呢?谢谢
发布于 2014-03-11 22:35:38
我认为这是由于构建闭包链时方法writeNumbers未知这一潜在错误造成的。
你需要改变:
writeNumbers(delegate, "myNumbers")至
this.writeNumbers(delegate, "myNumbers")它会成功的..。有趣的是,这感觉就像个虫子.如果我有空闲时间,我会调查的;-)
编辑:找到this previous question,它显示了相同的东西
https://stackoverflow.com/questions/22337746
复制相似问题