当我在Java中迭代Non-Generics Map时,编译器会抱怨

zjf*_*fdu 4 java generics

当我在Java中迭代非泛型地图时,我遇到了问题

Map map=new HashMap();
for (Map.Entry entry:map.entrySet()){

}
Run Code Online (Sandbox Code Playgroud)

但编译器抱怨并说"类型不匹配:无法从元素类型Object转换为Map.Entry"当我将Map类型更改为Generics时,它可以工作

Map<Object,Object> map=new HashMap<Object,Object>();
for (Map.Entry entry:map.entrySet()){

}
Run Code Online (Sandbox Code Playgroud)

这让我很困惑,有谁知道是什么原因?提前致谢.

new*_*cct 7

当你使用原始类型时,就像你在这里一样Map,所有泛型都被关闭了,所以entrySet()只返回一个裸Set类型(不是Set<Map.Entry whatever>),如果你迭代它,你只能得到Object它.