我是 Groovy 的新手,我对地图的使用有疑问:
我知道我可以做到:
def map = [key:"value"]
但是,如果我这样做意味着什么:
Map<String, String> map = ["1":1, "2":"2"]
这段代码可以编译,但映射并不是真正的 String->String 映射:
map.each({println it.key + ":" + it.value + "[" + it.value.class + "]"})
它打印:
1:1[类java.lang.Integer]
2:2[类 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>
这个解释现在完全有道理。