为什么Map<String, ?> test = ImmutableMap.builder().build();
无法编译,但Map<String, ?> test = ImmutableMap.<String, Object>builder().build();
工作正常?
第一个代码片段失败:
error: incompatible types
Map<String, ?> test = ImmutableMap.builder().build();
^
required: Map<String,?>
found: ImmutableMap<Object,Object>
我相信番石榴提交者意味着这个工作。
答案 0 :(得分:19)
这不是Guava的失败,而是Java解析泛型的方式,而这是我们无法控制的。 =(
相信我们:这是我们花费了大量时间的事情。在这个issue中,Kevin提到我们试图尝试获取它的方法不少于十五种,因此您不必明确指定这些类型参数。
如果您只对ImmutableMap.builder().build()
的情况感兴趣,也就是说,地图中没有条目......那么您应该使用ImmutableMap.of()
。对于泛型来说,这不会有任何有趣的问题:它只会起作用。