我敢肯定这是一个非常简单的问题,但是请看下面的代码示例:

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");

我只是想知道在第一个示例中使用naturalOrder()方法的正确方法是什么?在该示例中,Java无法推断类型,因此您会收到“类型不匹配”错误。

最佳答案

通过一系列类似的链接调用,编译器无法推断对naturalOrder()的调用的类型实参,因为其结果没有立即分配给可用于推断的内容。

你可以写

ImmutableSortedSet<String> ok = ImmutableSortedSet.<String>naturalOrder().build();

要么
ImmutableSortedSet.Builder<String> builder = ImmutableSortedSet.naturalOrder();
// ...
ImmutableSortedSet<String> ok = builder.build();

08-18 17:35