给出摘要:
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());
});
调用Stream
,filter
,...等其他map
的API方法时出现相同的编译错误。
为什么缺少泛型会导致编译错误?