我正在使用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)
MFo*_*ter 10
正确的语法是
ImmutableSortedMap.Builder<Integer, String> b2 =
ImmutableSortedMap.<Integer, String>naturalOrder();
Run Code Online (Sandbox Code Playgroud)
你可以完全删除泛型,因为在这种情况下推断出它们:
ImmutableSortedMap.Builder<Integer, String> b2 =
ImmutableSortedMap.naturalOrder();
Run Code Online (Sandbox Code Playgroud)
正确的语法应该是:
ImmutableSortedMap.Builder<Integer, String> b2 =
ImmutableSortedMap.<Integer, String>naturalOrder();
Run Code Online (Sandbox Code Playgroud)
(注意,通用参数位于点后面,而不是之前)
| 归档时间: |
|
| 查看次数: |
2735 次 |
| 最近记录: |