JAVA中返回值是接口类型的数据,怎么理解?

有些方法返回的是集合,但是这个集合又是接口类型的,那么引用这个接口的对象,为什么能访问的数据呢

不是里面都是抽象出来的方法吗

类创建出的对象调用方法我能理解,一个接口对象为什么也能调用方法?

Set<Map.Entry<K,V>> entrySet()
返回此映射中包含的映射关系的 Set 视图。

用这个方法帮我解释下,用接口型的集合怎么实现取出集合里的数据的.

谢谢!!

接口只负责声明方法,
具体方法体得看它的实现类,它的实现类里肯定得显式或隐式创建

Set<Map.Entry<K,V> setInstance=new HashSet<Map.Entry<K,V>();
return setInstance;
-_-|| 先还是好好理解一下多态和上溯造型吧,看这么复杂的结构只会更迷糊追问

我不是为了学习接口才问这个啊,而是为了学习HashMap这个集合才学这问这个啊,不知道为什么,居然Map集合中没有迭代器,只有这种东西

追答

连接口有什么作用都不知道就直接去看Map的源码?到后面学设计模式有大堆的后期绑定我看你要问的问题更多

温馨提示:答案为网友推荐,仅供参考
第1个回答  推荐于2018-04-27

通常是遍历时用

HashMap<String,Double> m=//...填好数据
for(Entry<String, Double > e: m.entrySet()){ //获得元素组集,并遍历出每个键和值
           System.out.println("键:"+e.getKey()+", 值:"+e.getValue());
}

本回答被网友采纳
第2个回答  2014-07-25
实际返回的是某个类的对象,这个类实现了对应的接口

跟List list = new ArrayList();是类似的东西
第3个回答  2014-07-25
调用实现这个接口的子类得到的数据,比如:
Map<Integer,Integer> set=new HashMap<Integer,Integer>();
set.put(1, 11);
set.put(2,22);
for(Entry<Integer,Integer> entry:set.entrySet()){
System.out.println(entry.getKey()+":"+entry.getValue());
}
接口可以调用实现这个接口的子类的方法
第4个回答  2018-04-27
接口不能被实例化,所以返回的其实是实现接口类的对象,所有实现该接口的类对象都可以是该函数的返回值,这其实是多态的特点啦兄弟
相似回答