【问题标题】:Define Type of Immutable Map With Builder使用 Builder 定义不可变映射的类型
【发布时间】:2016-05-07 17:07:40
【问题描述】:

我正在尝试创建 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 的类型是 &lt;Object, Object&gt;。有没有办法将不可变地图构建器显式转换或初始化为ImmutableMap&lt;BooleanSupplier, List&lt;String&gt;&gt; 类型?

【问题讨论】:

    标签: java collections guava


    【解决方案1】:

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

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

    【讨论】:

    • 另外值得注意的是,这可能更好地表达为ImmutableListMultimap
    猜你喜欢
    • 1970-01-01
    • 2019-01-25
    • 1970-01-01
    • 2016-03-30
    • 1970-01-01
    • 2012-12-23
    • 1970-01-01
    • 1970-01-01
    • 2017-03-21
    相关资源
    最近更新 更多