2011-06-15 25 views
3

我敢肯定,这是一个很简单的问题,但请看看下面的代码示例:使用Java Guava库,如何使用Builder创建ImmutableSortedSet?

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不能推断出类型,所以你会得到一个“类型不匹配”的错误。

回答

5

通过一系列如此的链接调用,编译器无法为naturalOrder()调用推断出类型参数,因为其结果并未立即分配给可用于推理的内容。

你可以写

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

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

这样做:

final ImmutableSortedSet<String> nowOk = ImmutableSortedSet.<String>naturalOrder().build();