Java:实例化Google Collection的HashBiMap

Nic*_*ner 5 java bimap guava

我正在使用Eclipse,并且我已经添加了google-collect.1.0-rc2.jar作为引用的库.但不知怎的,这仍然无效:

import com.google.common.collect.HashBiMap;

public class Odp {        
    //...

    HashBiMap<Character, Integer> charOcc =
        HashBiMap<Character, Integer>.create();    
}
Run Code Online (Sandbox Code Playgroud)

Eclipse给出以下错误:

此行有多个标记

  • HashBiMap无法解析
  • Character.Integer无法解析
  • 令牌",","."上的语法错误.预期
  • 令牌"."上的语法错误,删除此令牌
  • 对于类Odp,方法create()未定义

我究竟做错了什么?

其他谷歌的东西,如乔纳,工作得很好.(但乔伊纳不是通用的.)

mat*_*t b 20

调用静态泛型函数时,不传递类型参数:

 HashBiMap<Character, Integer> charOcc = HashBiMap.create();
Run Code Online (Sandbox Code Playgroud)

你真的不应该编写实现类代码,所以你最好不要这样做

 Map<Character, Integer> charOcc = HashBiMap.create();
Run Code Online (Sandbox Code Playgroud)

要么

 BiMap<Character, Integer> charOcc = HashBiMap.create();
Run Code Online (Sandbox Code Playgroud)

  • 很可能,你的代码的其余部分只关心你使用Map/BiMap(它们都是接口),而不是你专门使用HashBiMap和TreeBiMap(不确定是否存在)或其他一些BiMap实现.通过编码到接口而不是实现,如果你想换掉你使用的底层实现(让我们说你决定使用TreeMap而不是HashMap,因为你想要订购),那么你只需要制作在很少的地方变化. (10认同)
  • 顺便提一下,如果只是在类型参数之前移动点,原始代码也会起作用. (5认同)