我想要一个如下所示的带有动态键的常规映射,并希望通过动态键获取值。但我无法访问它,它为同一键返回 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
}
}
我得到的失败是,
Assertion failed:
assert map."WEIGHT" == 100
| | |
| null false
[WEIGHT:100, id:package001]
最佳答案
不幸的是,您存储的 map 键是 GString
,而不是 String
。这意味着 map 不认为这些键相等。
如果您想使用字符串值访问您的 map ,您应该将键存储为字符串:
def map = [ ("${AmazonPackage.WEIGHT}".toString()) : 100, "id": "package001"]
assert map."WEIGHT" == 100
关于groovy - 通过动态键访问 groovy 映射,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35283215/