使用显式类型初始化ImmutableMap?

时间:2017-05-09 12:07:23

标签: java guava

我需要初始化一个ImmutableMap(番石榴21.0),我需要它来解析一个Map>对于这个例子,我将只使用String。

所以我有:

import com.google.common.collect.ImmutableMap;
public class MyClass {
    private Map<String,String> testMap = 
         ImmutableMap<String,String>.builder().put("a","b").build();

在最后一行,我得到了大量的编译器错误。使用ImmutableMap<String,String>.of()会得到相同的结果。

如果我删除,我只会收到一个错误,类型不匹配。

当我想要一个具有显式类型的地图时,如何将ImmutableMap用于显式(类文字)初始化?

2 个答案:

答案 0 :(得分:7)

在点后放置泛型类型

private Map<String, String> testMap = 
    ImmutableMap.<String, String>builder().put("a","b").build();

详情请见Angelika Langer's Generics FAQ section on "What is explicit type argument specification?"

答案 1 :(得分:1)

如果您不需要使用构建器,则无需指定泛型类型参数。

只需使用:

Map<String, String> map = ImmutableMap.of("a", "b");

通用类型参数将由编译器推断。

另一方面,如果您需要使用构建器,那么@Xaerxess的答案将解释您需要做什么。