不兼容的类型 Guava Immutable Map to Java util map

Incompatible types Guava Immutable Map to Java util map

如何将嵌套的不可变映射转换为映射。

我有一个函数定义:

double total(Map<String, Map<String, Double>>);

现在对于我的测试用例,我按以下格式编写:

val input = ImmutableMap.of(key1, ImmutableMap.of(key2, value2));

但是我收到错误不兼容的类型:不可变映射无法转换为

java.util.Map

但是,如果它不是嵌套地图,我也可以做到。

Lombok 将 ImmutableMap<String, ImmutableMap<String, Double>> 检测为与 Map<String, Map<String, Double>> 不兼容的类型,详见 here。要修复,只需显式声明类型:

Map<String, Map<String, Double>> input = ImmutableMap.of(key1, ImmutableMap.of(key2, value2));

或者,由于您的地图显然是只读的,您也可以使用 upper-bounded wildcard 传递它,如下所示:

double total(Map<String, ? extends Map<String, Double>> m);

这将允许它接受 Map 的任何子类型作为值类型。