這是我在看(使用谷歌的ImmutableMap)這個Java語法在哪裏看起來像方法參數化,是什麼意思?
ImmutableMap.<String,String>of();
這是什麼意思的代碼?什麼是做
Class.<GenericType>methodName()?
這是我在看(使用谷歌的ImmutableMap)這個Java語法在哪裏看起來像方法參數化,是什麼意思?
ImmutableMap.<String,String>of();
這是什麼意思的代碼?什麼是做
Class.<GenericType>methodName()?
ImmutableMap
的意義有兩個類型參數,K
和V
一個泛型類。該語法給出了這兩個參數的具體值,在這種情況下兩者都是String
。
因此,上面返回String
到String
的空映射。
見JLS 15.2除其他事情說的方法invokation是
MethodInvocation: TypeName . NonWildTypeArguments Identifier (ArgumentListopt)
這裏的類型參數是String
和String
它用於指定通用類型時,類型推斷不起作用例如:
Map<String, String> m = ImmutableMap.of();
Map<String, String> m2 = ImmutableMap.<String, String>builder().build();
它將參數化方法的返回值的通用類型(s) ALUE。
很酷。這似乎很像鑄造。這是否與Map相同?m2 =(Map )ImmutableMap.builder()。build()? –
Jeremy
我現在沒有IDE(或者任何編輯器和JDK),但是我認爲它不能編譯。 –
不,提供類型參數比泛型更好。通用轉換是沒有意義的('ArrayList'和'ArrayList '是同一個類,因此不會捕獲這些是不兼容的類型)。提供通用類型允許編譯器在編譯時確保類型安全。 –
Dunes