黑马程序员技术交流社区

标题: 泛型问题。请大侠指教。。。 [打印本页]

作者: 十字路口    时间: 2013-6-4 17:52
标题: 泛型问题。请大侠指教。。。
本帖最后由 十字路口 于 2013-6-5 23:17 编辑

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

Map map = new HashMap ();
有什么区别呢,或者说那种写法更好些,为什么呢?
作者: liujkh123    时间: 2013-6-4 18:14
Map map = new HashMap();  这个Map里面可以随便放非基本类型的对象.
Map<Object> Map = new HashMap<Object>();这个map里面只能放Object类型的对象,比如
Map<Thread> map = new HashMap<Thread>() 这个map里面只能放Thread对象,即线程对象。
作者: 于腾飛    时间: 2013-6-4 18:44
泛型就是要限定存入集合里的元素类型,把运行时的异常转移到编译时,用泛型的时候你就记住一句话: 左右两边都有泛型,那么左右两边要一致!  
作者: 郭天龚    时间: 2013-6-4 19:38

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

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

这两种写法肯定是第一种好。你在查看java API文档时会发现有关集合的接口或者子类乃至子类中的方法都是有泛型限定的。
作者: 神之梦    时间: 2013-6-4 21:42
其实我是看不出什么区别的,定义泛型不就是为了限制某一些类型么?
如果里面放Object这个对任何对象都包容的上帝的话,应该就等于没限制了吧。。。。。。大神们。。。。。。。。。。。。。。。。。。
作者: luckwei    时间: 2013-6-4 23:05
Map<Object, Object> map = new HashMap<Object, Object>(); 这是一种早期在操作引用数据类型不明确时定义Object来完成扩展的,现在定义泛型来完成扩展,
Map map = new HashMap (); 这里面可以存放任意类型的对象,然后因为强转可能要出现运行时的人为异常。
总之相比第一种比较好一些
作者: 十字路口    时间: 2013-6-4 23:07
根据大家的说法,我测试了一下,发现Map<Object,Object> map=new HashMap<Object,Object>();
可以放一些基本类型的类型,基本类型不是对象吧?那么这个限定似乎没起作用。而且Map map = new HashMap ();
是可以放一些基本类型的,这种写法我还是找不到区别,有没有别的说法呢?谢谢大家。。。
作者: ㄗs:/|丶hearts    时间: 2013-6-4 23:43
Map map = new HashMap (); 这里可以随便放
Map<Object,Object> map=new HashMap<Object,Object>();这个map集合中只能放Object类型,因为泛型限定了放入其中的元素,增加了安全 有泛型的好卅

作者: 十字路口    时间: 2013-6-5 23:16
谢谢大家。我还是好好充电去吧。。




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