2

这是最小的演示案例:

class T extends HashMap {
  @Override
  String toString() {
    return "foo"
  }
}

def t = new T()
println t.toString()
println "${t}"​

输出是

foo
[:]

因此,@Override toString()从未执行以获取 内的值GString。我应该在里面放断点吗?我错过了什么还是一个错误?除了HashMap并且Collection似乎工作正常。

4

1 回答 1

3

GStringMap.toString()直接调用,而是调用

InvokeHelper.write(Writer out, Object object)

在这里放断点,看看会发生什么:

我从调试会话中录制了一个简短的视频,以向您展示当这个对象放入 GString 时会发生什么:

https://youtu.be/HYHdfmwd-lw

我希望它有所帮助。

于 2017-07-29T07:07:29.770 回答