使用Builder定义不可变映射的类型

时间:2016-01-29 20:25:39

标签: java collections guava

我正在尝试将Map<BooleanSupplier, List<String>>作为我的流程的一部分,我制作供应商,然后尝试使用不可变的地图构建器。

类似的东西:

 //Build up BooleanSuppliers
 Map<BooleanSupplier, List<String>> bsList = ImmutableMap.builder()
 .put(bs1, Collections.singletonList("bs1string"))
 .put(bs2, Arrays.asList("bs4","bs6"))
 ....
 .build();

问题在于intellij表示即使我进行显式转换,类型也不可转换,因为ImmutableMap的类型为<Object, Object>。有没有办法将不可变地图构建器显式地转换或初始化为ImmutableMap<BooleanSupplier, List<String>>类型?

1 个答案:

答案 0 :(得分:16)

在调用builder()时明确指定泛型类型:

Map<BooleanSupplier, List<String>> bsList = 
    ImmutableMap.<BooleanSupplier, List<String>>builder()
        .put(...)
        .build();