[英]Groovy map and Java map on Generics
我是Groovy的新手,我對使用map有疑問:
我知道我能做到:
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>
這個解釋現在很有意義。
這個論壇帖子談論Groovy忽略泛型,特別是:
Groovy是一種動態類型語言,但您可以靜態聲明變量類型。 JVM上的泛型在編譯時被擦除,只有原始類型可供VM使用(對於groovy和Java都是如此)。 在Java中,有編譯時檢查以確保您不將int填充到字符串列表中。 但是,Groovy不會在編譯時檢查類型。
因此,這意味着在編譯時不檢查type參數,並且在運行時不可用。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.