当我尝试编译这行代码时:
public Map<String,Long>countBranchesPerMunicipality(){
return mappamun.values().stream()
.collect(toMap(m->m.getName() , m->m.getBranches().size()));
}
它给了我错误:
无法从
Map<Object,Object>
转换为Map<String,Long>
。
有人可以向我解释原因吗?
答案 0 :(得分:3)
int size();
这是List<E> extends Collection<E>
返回的内容。自动装箱会将int
转换为Integer
s,但不转换为Long
s。这就是你得到编译错误的原因。
有两种可能的选择:
Map<String, Integer>
(首选); long
:(long)m.getBranches().size()
。答案 1 :(得分:0)
getBranches()
方法很可能返回Collection
个实例,Collection.size()
返回int
而不是long
。
因此,您应该从
更改方法的返回类型Map<String,Long>
到:
Map<String,Integer>
当然m.getName()
应该返回一个字符串。