A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 十字路口 中级黑马   /  2013-6-4 17:52  /  1727 人查看  /  8 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 十字路口 于 2013-6-5 23:17 编辑

Map<Object, Object> map = new HashMap<Object, Object>();

Map map = new HashMap ();
有什么区别呢,或者说那种写法更好些,为什么呢?

评分

参与人数 1技术分 +1 收起 理由
HM汪磊 + 1

查看全部评分

8 个回复

倒序浏览
Map map = new HashMap();  这个Map里面可以随便放非基本类型的对象.
Map<Object> Map = new HashMap<Object>();这个map里面只能放Object类型的对象,比如
Map<Thread> map = new HashMap<Thread>() 这个map里面只能放Thread对象,即线程对象。

评分

参与人数 1技术分 +1 收起 理由
HM汪磊 + 1

查看全部评分

回复 使用道具 举报
泛型就是要限定存入集合里的元素类型,把运行时的异常转移到编译时,用泛型的时候你就记住一句话: 左右两边都有泛型,那么左右两边要一致!  
回复 使用道具 举报

1. Map<Object, Object> map = new HashMap<Object, Object>(); 这个map集合中只能放Object类型的键和Object类型的值,因为泛型限定了放入其中的元素。

2. Map map = new HashMap ();  这个Map里面可以随便放非基本类型的对象.

这两种写法肯定是第一种好。你在查看java API文档时会发现有关集合的接口或者子类乃至子类中的方法都是有泛型限定的。

评分

参与人数 1技术分 +1 收起 理由
袁梦希 + 1 很给力!

查看全部评分

回复 使用道具 举报
其实我是看不出什么区别的,定义泛型不就是为了限制某一些类型么?
如果里面放Object这个对任何对象都包容的上帝的话,应该就等于没限制了吧。。。。。。大神们。。。。。。。。。。。。。。。。。。
回复 使用道具 举报
Map<Object, Object> map = new HashMap<Object, Object>(); 这是一种早期在操作引用数据类型不明确时定义Object来完成扩展的,现在定义泛型来完成扩展,
Map map = new HashMap (); 这里面可以存放任意类型的对象,然后因为强转可能要出现运行时的人为异常。
总之相比第一种比较好一些

评分

参与人数 1技术分 +1 收起 理由
袁梦希 + 1 很给力!

查看全部评分

回复 使用道具 举报
根据大家的说法,我测试了一下,发现Map<Object,Object> map=new HashMap<Object,Object>();
可以放一些基本类型的类型,基本类型不是对象吧?那么这个限定似乎没起作用。而且Map map = new HashMap ();
是可以放一些基本类型的,这种写法我还是找不到区别,有没有别的说法呢?谢谢大家。。。
回复 使用道具 举报
Map map = new HashMap (); 这里可以随便放
Map<Object,Object> map=new HashMap<Object,Object>();这个map集合中只能放Object类型,因为泛型限定了放入其中的元素,增加了安全 有泛型的好卅

评分

参与人数 1技术分 +1 收起 理由
袁梦希 + 1 很给力!

查看全部评分

回复 使用道具 举报
谢谢大家。我还是好好充电去吧。。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马