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

for*_*ect 10 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();
Run Code Online (Sandbox Code Playgroud)

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

JB *_*zet 22

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

Map<BooleanSupplier, List<String>> bsList = 
    ImmutableMap.<BooleanSupplier, List<String>>builder()
        .put(...)
        .build();
Run Code Online (Sandbox Code Playgroud)