我想要一个构造一个带有动态键的groovy map,如下所示,并希望通过动态键获取值.但是我无法访问它,它为同一个键返回null.
class AmazonPackage {
public static String WEIGHT = "WEIGHT"
}
class PackageTests {
@Test
void "map should return value by dynamic key" () {
def map = [ ("${AmazonPackage.WEIGHT}") : 100, "id": "package001"]
assert map['id'] == "package001"
//assert map[("${AmazonPackage.WEIGHT}")] == 100
//assert map."${AmazonPackage.WEIGHT}" == 100
assert 2 == map.keySet().size()
assert map."WEIGHT" == 100 //fails
}
@Test
void "map should return value by simple key" () {
def map = ["w" : 100]
assert map."w" == 100
}
}
Run Code Online (Sandbox Code Playgroud)
我得到的失败是,
Assertion failed:
assert map."WEIGHT" == 100
| | |
| null false
[WEIGHT:100, id:package001]
Run Code Online (Sandbox Code Playgroud)
不幸的是,你存储的地图密钥是a GString,而不是a String.这意味着地图不会将这些键视为相等.
如果要使用字符串值访问映射,则应将密钥存储为字符串:
def map = [ ("${AmazonPackage.WEIGHT}".toString()) : 100, "id": "package001"]
assert map."WEIGHT" == 100
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
3311 次 |
| 最近记录: |