如何将嵌套的不可变地图转换为地图。
我有一个功能定义:
double total(Map<String, Map<String, Double>>);
现在,对于我的测试用例,我的编写方式如下:
val input = ImmutableMap.of(key1, ImmutableMap.of(key2, value2));
但是我收到错误不兼容的类型:不可变的地图无法转换为
java.util.Map
但是如果它不是嵌套的Map我就能做到。
答案 0 :(得分:3)
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
的任何子类型作为值类型。