2009-10-07 59 views
5

我使用Eclipse,並且我添加了google-collect.1.0-rc2.jar作爲引用庫。但不知何故這仍然不起作用:Java:實例化Google集合的HashBiMap

import com.google.common.collect.HashBiMap; 

public class Odp {   
    //... 

    HashBiMap<Character, Integer> charOcc = 
     HashBiMap<Character, Integer>.create();  
} 

的Eclipse提供了以下錯誤:

多個標記在該行

  • HashBiMap不能得到解決
  • Character.Integer不能待解決
  • 令牌上的語法錯誤「,」,「。」預計
  • 語法錯誤令牌「」,刪除此令牌
  • 的方法創建()是未定義類ODP

我在做什麼錯?

其他谷歌的東西,如喬伊納,工作正常。 (但Joiner是不通用的。)

+0

有什麼錯誤訊息? – 2009-10-07 18:59:51

回答

20

當調用靜態的通用功能,你不通過類型參數:

HashBiMap<Character, Integer> charOcc = HashBiMap.create(); 

也真的你不應該代碼來實現類,所以你更好做

Map<Character, Integer> charOcc = HashBiMap.create(); 

BiMap<Character, Integer> charOcc = HashBiMap.create(); 
+0

我們走了。謝謝。 – 2009-10-07 19:15:02

+0

你能否解釋一下你的觀點:「你不應該編碼到實現類?」 – 2009-10-07 19:16:44

+10

很可能,其餘的代碼只關心你使用Map/BiMap(它們都是接口),而不是你特別使用HashBiMap vs TreeBiMap(不知道這是否存在)或其他一些BiMap實現。通過編碼到接口而不是實現,如果你想換掉你使用的底層實現(假設你決定使用TreeMap而不是HashMap,因爲你想要訂購),那麼你只需要做在很少的地方發生變化。 – 2009-10-07 19:21:24