GString和String是两个不同的类,因此使用GString对象作为Map对象的键或涉及GString对象的比较,可以在与String对象组合时产生意外的结果,因为GString和String不会具有相同的hashCode,也不会是否相等。在两个类型之间没有用于比较或映射键的自动强制,所以有时需要显式地在GString对象上调用toString()。
如果代码是期望GString,意外转换为String可能会导致问题,就像groovy.sql类中的方法一样。
Ps:当然也可以用过显示 String 类型声明写好,而不是用 def 声明会导致转成 GString 类型。