黑马程序员技术交流社区
标题:
关于Map.values()
[打印本页]
作者:
lovecx24
时间:
2013-12-5 17:31
标题:
关于Map.values()
Map.values()返回值是Collection,为什么不能使Set或者是List,List和set都继承Collection啊?
作者:
ysunday
时间:
2013-12-5 20:58
这个是面向接口吧,至于为什么不是Set 或者List,源码就是那么写的,不懂了
作者:
胡永城
时间:
2013-12-6 00:15
你可以查看下源码,Map<K,V>是接口,并没有实现Collection接口,定义时通常格式:
Map<String,String> m = new HashMap<String,String>();
HashMap的对象向上转型为Map,而且,HashMap也没有实现Collection接口
HashMap中values方法:
public Collection<V> values() {
Collection<V> vs = values;
return (vs != null ? vs : (values = new Values()));
}
复制代码
List<String> l = (List<String>) a.values(); // 可以通过编译,但运行时会报出ClassCastException异常,因为这是不安全的向下转型。
作者:
treecolor166
时间:
2013-12-6 21:29
Map.values()返回值是Collection,返回接口类型使用起来会更加灵活吧
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2