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

时间:2017-08-22 03:27:04

标签: java unit-testing guava lombok

如何将嵌套的不可变地图转换为地图。

我有一个功能定义:

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

现在,对于我的测试用例,我的编写方式如下:

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

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

java.util.Map

但是如果它不是嵌套的Map我就能做到。

1 个答案:

答案 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的任何子类型作为值类型。