2

以下代码工作正常

def json = new JsonBuilder()

json {
  writeNumbers(delegate, "myNumbers")
}

println json.toPrettyString()

def writeNumbers(json, name) {
  json."$name" {
      "w" 32
      "h" 32
  }
}

但是,一旦我在另一个“范围”内移动或添加 writeNumbers 调用,就会出现 stackoverflow 异常;就像这样

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

为什么会发生这种情况,我该如何解决?谢谢

4

1 回答 1

2

我认为这是由writeNumbers构建闭包链时方法未知的潜在错误引起的。

你需要改变:

writeNumbers(delegate, "myNumbers")

this.writeNumbers(delegate, "myNumbers")

它会起作用......不过有趣的是,这感觉像是一个错误......我会调查是否有空闲时间;-)

编辑:发现这个以前的问题显示了同样的事情

于 2014-03-11T22:35:38.763 回答