这是最小的演示案例:
class T extends HashMap {
@Override
String toString() {
return "foo"
}
}
def t = new T()
println t.toString()
println "${t}"
输出是
foo
[:]
So the @Override toString()
从未为获取价值而执行GString
。如果我在里面放置断点,它永远不会停在那里。我错过了什么还是它是一个错误?以外HashMap
and Collection
似乎工作正常。
GString
不打电话Map.toString()
直接调用,而是调用
InvokeHelper.write(Writer out, Object object)
放置断点here看看会发生什么:
我在调试会话中录制了一个简短的视频,向您展示当将此对象放入 GString 中时到底会发生什么:
https://youtu.be/HYHdfmwd-lw
我希望它有帮助。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)