这是最小的演示案例:
class T extends HashMap {
@Override
String toString() {
return "foo"
}
}
def t = new T()
println t.toString()
println "${t}"
输出
foo
[:]
因此,@Override toString()
从未执行以获取GString
内的值。我应该把断点放在里面从来没有停在那里。我错过了什么或者它是一个错误吗?除了HashMap
和Collection
之外似乎工作正常。
答案 0 :(得分:2)
GString
不直接致电Map.toString()
而是致电
InvokeHelper.write(Writer out, Object object)
放置断点here,看看会发生什么:
我已经在调试会话中录制了一段简短的视频,以准确地向您展示将此对象放入GString时会发生什么:
我希望它有所帮助。