にGroovyのマップとJavaマップ私はGroovyのに新しいです、と私はマップの使用について質問があります。ジェネリック医薬品
私は私が行うことができます知っている:
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]
ができ、誰もが、私は明示的にストリング]> [文字列で入力されたマップは、ストリング]>整数が含まれているマップオブジェクトに割り当てることができますどのように来る理解するのに役立ちますか?ありがとうございました!
=== ===更新@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で一般的な構文を許可するポイントは何ですか? – ZhongYu
@ zhong.j.yuコンパイラーの構文チェッカーが大変です。コンパイル時に特に型の強制はほとんどありません。 Groovyはタイプ強制の観点から非常に緩いものであり、 'Object'タイプを広く使用しています – Reimeus
genericsをまったくサポートしていないとコンパイラが幸せにならないでしょうか? – ZhongYu