使用Java Guava库,如何使用Builder创建ImmutableSortedSet?

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无法推断类型,因此您会收到"类型不匹配"错误.

Col*_*inD 5

通过这样的一系列链式调用,编译器无法推断调用的类型参数,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)