Dav*_* L. 3 java generics types type-inference guava
我确定这是一个非常简单的问题,但请看下面的代码示例:
final ImmutableSortedSet<String> notOk = ImmutableSortedSet.naturalOrder().build();
final ImmutableSortedSet<String> ok = new ImmutableSortedSet.Builder<String>(Ordering.natural()).build();
final ImmutableList<String> typicalGuava = ImmutableList.of("one", "two");
Run Code Online (Sandbox Code Playgroud)
我只是想知道在第一个例子中使用naturalOrder()方法的正确方法是什么?在该示例中,Java无法推断类型,因此您会收到"类型不匹配"错误.
通过这样的一系列链式调用,编译器无法推断调用的类型参数,naturalOrder()因为它的结果不会立即分配给它可用于推理的内容.
你可以写
ImmutableSortedSet<String> ok = ImmutableSortedSet.<String>naturalOrder().build();
Run Code Online (Sandbox Code Playgroud)
要么
ImmutableSortedSet.Builder<String> builder = ImmutableSortedSet.naturalOrder();
// ...
ImmutableSortedSet<String> ok = builder.build();
Run Code Online (Sandbox Code Playgroud)