Map集合应用泛型的疑问

axr1985lazy 2015-07-22 06:10:04
先上代码。

import java.io.Serializable;
import java.util.HashMap;
import java.util.Map;
import java.util.Map.Entry;
import java.util.Set;

public class ForeachDemo {

public static void main(String[] args) {

Map<String, Integer> infos = new HashMap<String, Integer>();
infos.put("David", 28);
infos.put("Kate", 19);
infos.put("Peter", 31);
infos.put("Susan", 24);

listMapElementByForeach(infos);
}

private static void listMapElementByForeach(Map<? extends Serializable, ? extends Serializable> map){
/*Set<Map.Entry<? extends Serializable, ? extends Serializable>> entrySet = map.entrySet();
for(Map.Entry<? extends Serializable, ? extends Serializable> me : entrySet){
Serializable key = me.getKey();
Serializable value = me.getValue();
System.out.println(key + " = " + value);
}*/

Set<?> entrySet = map.entrySet();
for(Object obj : entrySet){
Map.Entry<? extends Serializable, ? extends Serializable> me =
(Map.Entry<? extends Serializable, ? extends Serializable>)obj;
Serializable key = me.getKey();
Serializable value = me.getValue();
System.out.println(key + " = " + value);
}
}

}


listMapElementByForeach方法中,注释部分代码总是无法通过编译,会在“entrySet()”方法下面划红线,提示Exception in thread "main" java.lang.Error: Unresolved compilation problem:
Type mismatch: cannot convert from Set<Map.Entry<capture#1-of ? extends Serializable,capture#2-of ? extends Serializable>> to Set<Map.Entry<? extends Serializable,? extends Serializable>>.
我的问题有二:
问题一:为什么会出现错误提示中的转换异常?
问题二:到底capture#1-of是什么意思?“capture#1-of ? extends Serializable”与“? extends Serializable”之间有什么区别?
...全文
282 回复 打赏 收藏 转发到动态 举报
写回复
用AI写文章
回复
切换为时间正序
请发表友善的回复…
发表回复

62,614

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧