nik*_*hil 2 java diamond-operator guava java-7
我正在使用java 7,这个代码片段无法编译
ImmutableSortedMap<Integer, String> INT_TO_WORD =
new ImmutableSortedMap.Builder<>(Ordering.natural())
.put(1, "one")
.put(2, "two")
.put(3, "three")
.build();
Run Code Online (Sandbox Code Playgroud)
而这一个确实如此
ImmutableSortedMap<Integer, String> INT_TO_WORD =
new ImmutableSortedMap.Builder<Integer, String>(Ordering.natural())
.put(1, "one")
.put(2, "two")
.put(3, "three")
.build();
Run Code Online (Sandbox Code Playgroud)
为什么我需要在rhs何时指定类型lhs?是否有更多的东西给<>操作员而不是眼睛.
这与例如不同
ArrayList<String> l = new ArrayList<>();
Run Code Online (Sandbox Code Playgroud)
这里new右侧有效地创建了ArrayList.
在您的示例中,new创建一个完全不同的类型,即Builder仅在最后ImmutableSortedMap由build()方法创建.编译器无法知道Builder <>与ImmutableSortedMap有什么关系.
或者用一个愚蠢的例子,这可能是完全有效的:
ArrayList<String> l = new SomethingSilly<Boolean>().getArrayListOfStrings();
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
260 次 |
| 最近记录: |