我正在使用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()未定义
我究竟做错了什么?
其他谷歌的东西,如乔纳,工作得很好.(但乔伊纳不是通用的.)
我正在使用Google Guava r08和JDK 1.6.0_23.
我想创建一个ImmutableSortedMap使用构建器.我知道我可以像这样创建构建器:
ImmutableSortedMap.Builder<Integer, String> b1 =
new ImmutableSortedMap.Builder<Integer, String>(Ordering.natural());
Run Code Online (Sandbox Code Playgroud)
然后使用它来构建地图,例如:
ImmutableSortedMap<Integer, String> map =
b1.put(1, "one").put(2, "two").put(3, "three").build();
Run Code Online (Sandbox Code Playgroud)
我注意到该类ImmutableSortedMap有一个naturalOrder()返回Builder自然顺序的方法.但是,当我尝试调用此方法时,我会遇到奇怪的错误.例如,这给出了一个奇怪的"预期"错误:
// Does not compile
ImmutableSortedMap.Builder<Integer, String> b2 =
ImmutableSortedMap<Integer, String>.naturalOrder();
Run Code Online (Sandbox Code Playgroud)
调用该naturalOrder()方法的正确语法是什么?
该方法的API文档提到了一些编译器错误.这与这种方法无关吗?
编辑
MForster的答案很好.但是当放弃仿制药时,我无法"一气呵成":
// Doesn't work, can't infer the types properly
ImmutableSortedMap<Integer, String> map =
ImmutableSortedMap.naturalOrder().put(1, "one").put(2, "two").put(3, "three").build();
Run Code Online (Sandbox Code Playgroud)
这确实有效:
ImmutableSortedMap<Integer, String> map =
ImmutableSortedMap.<Integer, String>naturalOrder().put(1, "one").put(2, "two").put(3, "three").build();
Run Code Online (Sandbox Code Playgroud)