我正在使用 Google Guava r08 和 JDK 1.6.0_23。
我想创建一个ImmutableSortedMap
使用构建器。我知道我可以像这样创建构建器:
ImmutableSortedMap.Builder<Integer, String> b1 =
new ImmutableSortedMap.Builder<Integer, String>(Ordering.natural());
然后用它来构建地图,例如:
ImmutableSortedMap<Integer, String> map =
b1.put(1, "one").put(2, "two").put(3, "three").build();
我注意到那个班级ImmutableSortedMap
有一个方法naturalOrder()
返回一个Builder
具有自然排序。但是,当我尝试调用此方法时,出现奇怪的错误。例如,这给出了一个奇怪的“;预期”错误:
// Does not compile
ImmutableSortedMap.Builder<Integer, String> b2 =
ImmutableSortedMap<Integer, String>.naturalOrder();
调用的正确语法是什么naturalOrder()
method?
该方法的 API 文档提到了一些编译器错误。这与此方法不起作用有什么关系吗?
edit
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();
这确实有效:
ImmutableSortedMap<Integer, String> map =
ImmutableSortedMap.<Integer, String>naturalOrder().put(1, "one").put(2, "two").put(3, "three").build();