使用collectAndThen()和Collectors.toMap()需要显式类型转换

时间:2015-12-29 08:20:46

标签: java java-8 guava

我有一个Map<String,BigDecimal>(比如说​​amountMap),我想将其转换为ImmutableMap<String,Double>,代码为:

return amountMap.entrySet().stream()
        .collect(collectingAndThen(toMap(e->e.getKey(),e->e.getValue().doubleValue()),ImmutableMap::copyOf));

然而,Eclipse显示一个错误,指出e.getKey()和e.getValue()需要显式类型转换,因为它们是Object类型。

当我将其拆分时,相同的代码可以正常工作:

Map<String,Double> tempMap = amountMap.entrySet().stream()
                                .collect(toMap(e->e.getKey(),e->e.getValue().doubleValue());

return ImmutableMap.copyOf(tempMap);

我假设前一个错误是因为Type Erasure,但如果没有,是否有办法将Map作为ImmutableMap返回而没有创建临时地图来保存结果的中间步骤?

1 个答案:

答案 0 :(得分:0)

这是因为我使用旧版本的Eclipse(Luna)修复了升级