【发布时间】:2013-04-02 02:49:42
【问题描述】:
我是 Groovy 的新手,对 map 的使用有疑问:
我知道我能做到:
def map = [key:"value"]
但是如果我这样做意味着什么:
Map<String, String> map = ["1":1, "2":"2"]
这段代码可以编译,但映射不是真正的字符串->字符串映射:
map.each({println it.key + ":" + it.value + "[" + it.value.class + "]"})
打印出来:
1:1[class java.lang.Integer]
2:2[class java.lang.String]
谁能帮我理解一个用String->String显式键入的地图如何分配给包含String->Integer的地图对象?谢谢!
=== 更新 ===
感谢@GrailsGuy提供的链接,如果我使用@TypeChecked将上面的代码包裹在一个方法中,会报错:
[Static type checking] - Incompatible generic argument types. Cannot assign java.util.Map <java.lang.String, java.io.Serializable> to: java.util.Map <String, String>
这个解释现在很有意义。
【问题讨论】: