使用以下代码段,我无法gString
从地图中检索:
def contents = "contents"
def gString = "$contents"
def map = [(gString): true]
assert map.size() == 1 // Passes
assert gString.hashCode() == map.keySet().first().hashCode() // Passes, same hash code
assert map[gString] // Fails
这怎么可能?
断言消息清楚地表明 Groovy 存在严重问题:
assert map[gString] // Fails
| ||
| |contents
| null
[contents:true]
这与为什么 groovy 看不到字典中的某些值不是同一个问题? 那里的第一个答案表明:
您将 GString 实例添加为地图中的键,然后使用 String 实例搜索它们。
在这个问题中,我清楚地添加GString
并尝试检索GString
.
也不是为什么在地图中处理 GString 键的方式有不同的行为?在GStringImpl上使用 equals() 和 == 的 Groovy 不同的结果对我来说也有答案。我不会改变任何东西,也不会String
与GString
.