不兼容的类型 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
的任何子类型作为值类型。
如何将嵌套的不可变映射转换为映射。
我有一个函数定义:
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
的任何子类型作为值类型。