【发布时间】:2017-06-26 12:38:48
【问题描述】:
简介
我需要通过键的动态名称对映射/属性进行空安全访问。地图本身可以为空。我想出了map?.(keyName),但想知道为什么它没有按预期工作并且总是返回null
代码示例
def map = [key: 'value']
def keyName = 'key'
map.each({ key, value -> println("[${key.class}]: [${value.class}]")})
println("keyName class is [${keyName.class}]")
println(map?.(keyName)) // null <--------- My question
// Alternatives that work well
println(map?.(keyName as String)) // value
println(map?.(keyName as java.lang.String)) // value
println(map?.get(keyName)) // value
输出
[class java.lang.String]: [class java.lang.String]
keyName class is [class java.lang.String]
null
value
value
value
问题
如果keyName 和映射键都是java.lang.String 类型,为什么map?.(keyName) 不返回值?为什么map?.(keyName as String) 返回?
链接
【问题讨论】:
标签: dictionary groovy