黑马程序员技术交流社区

标题: 接口类型问题 不是很明白 [打印本页]

作者: liguangcaiup    时间: 2013-6-19 10:54
标题: 接口类型问题 不是很明白
本帖最后由 liguangcaiup 于 2013-6-19 10:58 编辑

jdk文档说Map.Entry是个接口类型   下面的代码是用Map.Entry遍历Map。怎么感觉Map.Entry能存放对象呢   接口是不能创建对象的,为什么使用是感觉像类那样  
接口和类有什么区别和共同点呢

public static void main(String[] args)
        {
                Map<String,String> map = new HashMap<String,String>();

                map.put("02","zhangsan2");
                map.put("03","zhangsan3");
                map.put("01","zhangsan1");
                map.put("04","zhangsan4");

                //将Map集合中的映射关系取出。存入到Set集合中。
                Set<Map.Entry<String,String>> entrySet = map.entrySet();

                Iterator<Map.Entry<String,String>> it = entrySet.iterator();

                while(it.hasNext())
                {
                        Map.Entry<String,String> me = it.next();
                        String key = me.getKey();
                        String value = me.getValue();

                        System.out.println(key+":"+value);

                }
}

作者: mvplee    时间: 2013-6-19 11:04
本帖最后由 mvplee 于 2013-6-19 11:05 编辑

我写个伪代码,包你明白,Map.Entry接口是干毛用的
  1. interface Map{

  2.         public static interface Entry
  3.         {
  4.                 public abstruct Object getKey();
  5.                 public abstruct Ojbect getValue();
  6.         }
  7. }
  8. class HashMap implements Map{

  9.         class Hash implements Map.Entry{内部事务,定义在集合内
  10.                 pubilc Object getKey(){}
  11.                 public Object getValue(){}
  12.         }
  13. }
复制代码
内部接口?
静态地?
实现没?


作者: a767175432    时间: 2013-6-19 13:12
map.entrySet();   相当于反回了Map.Entry接口的实现类对象

就像迭代器接口Iterator 返回此迭代器一样 不是直接返回这个迭代器实例,而是内部代码返回了一个实现这个接口的类的对象再向上转型
对比一下
作者: 徐鹏跃    时间: 2013-11-21 15:13
恩 就是这样的  那只是接口的一个实现类




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2