使用Stream时使用对象而不是Map.Entry

时间:2019-06-19 09:32:04

标签: java generics java-stream

给出摘要:

Map map1 = new HashMap<>();
map1.entrySet().stream().forEach(entry -> {
    System.out.println(entry.getKey() + ":" + entry.getValue());
});

在没有声明泛型类型的情况下,我得到一个编译错误,通常说entry中的forEach是对象类型,而不是Map.Entry

如果我添加泛型(Object?),则可以正常编译:

Map<Object,Object> map2 = new HashMap<>();
map2.entrySet().stream().forEach(entry -> {
    System.out.println(entry.getKey() + ":" + entry.getValue());
});

Map<?,?> map3 = new HashMap<>();
map3.entrySet().stream().forEach(entry -> {
    System.out.println(entry.getKey() + ":" + entry.getValue());
});

调用Streamfilter,...等其他map的API方法时出现相同的编译错误。

为什么缺少泛型会导致编译错误?

0 个答案:

没有答案