2 u013429409 u013429409 于 2015.06.04 18:27 提问

java 的MapEntry的问题?

Set> set=map.entrySet();
for(Map.Entry entry:set){
System.out.println(entry.getKey()+"="+entry.getValue());
}

Map.Entry定义成静态接口,那是谁实现了getKey()和getValue()?还有为什么定义成静态接口?

4个回答

tongyi55555
tongyi55555   2015.06.04 21:56
已采纳

Map和Entry都是接口,这是没有错的,楼主这里只给了一个变量map,关键点就在这个map对象里面了,比如这个map是一个HashMap对象,你可以看下HashMap的类定义是怎么写。
在HashMap中实现了Map接口,同时在HashMap中有自己的内部静态类Entry实现了Map的内部接口Map.Entry,也就是在这个HashMap的内部静态类Entry中实现了最终的gatKey和getValue方法。
其他实现Map接口的类也是如此,楼主感兴趣可以看看其他类的定义。

Juforg
Juforg   2015.06.04 19:42

Map.Entry 这只是个内部类而已 这样写只是声明这个内部类 怎么是接口

u013429409
u013429409 API是些接口啊? 接口 Map.Entry public static interface Map.Entry
2 年多之前 回复
u013429409
u013429409   2015.06.04 20:02

API是些接口啊?
接口 Map.Entry
public static interface Map.Entry

Juforg
Juforg   2015.06.10 16:46

好吧,我错了, 这样定义 就是不让你随便new ,这些对象只能通过具体的实现类 才能初始化

如 Map 只能 new HashMap 二你要问的Map.Entry 对象的初始化 肯定在实现类里实现的,getKey()和getValue() 应该也是

Csdn user default icon
上传中...
上传图片
插入图片