2008-10-03 26 views

回答

31

通過執行以下操作:

List<User> users = Collections.emptyList(); 

Collections.emptyList();類型返回列表的將是推斷String由於分配的左手側。

List<User> users = Collections.<User>emptyList(); 

在這種特定情況下,這可能會出現多餘的大多數人(其實,我很看到:但是,如果你喜歡就沒有這個推論,你可以明確地通過執行以下操作定義它小碼出的是利用了顯式類型參數)的野性,但與簽名的方法:void doStuff(List<String> users)這將是完全乾淨的一個具有顯式類型參數調用doStuff()如下:

doStuff(Collections.<String>emptyList()); 
+2

每當你在一個方法中寫下一個明確的類型參數時,上帝殺死一隻小貓(我認爲這是喬什布洛克說的) – 2009-05-12 08:38:00

1
List<User> users = Collections.emptyList(); 
1

肌酸後g空的列表,我建議將它存儲爲一個常量,而不是每次創建一個新的列表。

此外,使用Collections.emptyList()new ArrayList(0)的性能優勢相比,雖然差別可能很小。 emptyList()返回的列表被優化爲不可變的空列表。例如,size()方法只返回0,而不是字段查找或任何ArrayList。

相關問題