为什么这在Groovy中有效:
Map<String, String> map = ["k1" : "p1", "k2" : "p2"]
但这不是吗?
Map<UUID, String> map = [UUID.randomUUID() : "p1", UUID.randomUUID() : "p2"]
由于
答案 0 :(得分:2)
您必须将密钥放在()
:
Map<UUID, String> map = [(UUID.randomUUID()): "p1", (UUID.randomUUID()): "p2"]
Groovy假设:
之前的标记只是字符串键(例如,你的第一个例子也可以写成:[k1: "p1", ...]
并且可以正常工作。但是因为你的方法调用没有有效的字符串(你甚至不希望它们被解释为字符串)它编译失败。
请参阅http://docs.groovy-lang.org/docs/next/html/documentation/#_maps
当您需要在地图定义中将变量值作为键传递时,必须用括号括起变量或表达式