2012-10-03 42 views

回答

5

ImmutableMap的意義有兩個類型參數,KV一個泛型類。該語法給出了這兩個參數的具體值,在這種情況下兩者都是String

因此,上面返回StringString的空映射。

JLS 15.2除其他事情說的方法invokation是

 
MethodInvocation: 
    TypeName . NonWildTypeArguments Identifier (ArgumentListopt) 

這裏的類型參數是StringString

3

它用於指定通用類型時,類型推斷不起作用例如:

Map<String, String> m = ImmutableMap.of(); 
Map<String, String> m2 = ImmutableMap.<String, String>builder().build(); 

它將參數化方法的返回值的通用類型(s) ALUE。

+0

很酷。這似乎很像鑄造。這是否與Map 相同?m2 =(Map )ImmutableMap.builder()。build()? – Jeremy

+0

我現在沒有IDE(或者任何編輯器和JDK),但是我認爲它不能編譯。 –

+5

不,提供類型參數比泛型更好。通用轉換是沒有意義的('ArrayList '和'ArrayList '是同一個類,因此不會捕獲這些是不兼容的類型)。提供通用類型允許編譯器在編譯時確保類型安全。 – Dunes