为什么 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>
我相信 Guava 提交者的本意是为了让它发挥作用。
最佳答案
这不是 Guava 的失败,而是 Java 解析泛型的方式,这是我们无法控制的。 =(
相信我们:这是我们花费了很多时间的事情。在这个issue , Kevin 提到我们尝试了至少十五种方法来尝试获取它,这样您就不必显式指定这些类型参数。
如果您只对 ImmutableMap.builder().build()
的情况感兴趣,也就是说, map 中没有条目...那么您应该使用 ImmutableMap.of()
。泛型不会有任何有趣的问题:它会正常工作。
关于java - 为什么 ImmutableMap.builder().build() 没有选择正确的类型参数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9058430/