黑马程序员技术交流社区

标题: 迭代器问题 [打印本页]

作者: 余雷    时间: 2013-5-4 20:53
标题: 迭代器问题
为什么迭代器的next方法返回值类型是Object呢?
作者: 薛淑凯    时间: 2013-5-4 20:57
从哪里看的返回值是Object的
作者: U芽Lady    时间: 2013-5-4 21:47
因为Object是所有类的父类
用迭代器迭代集合的时候,不确定集合中的元素是什么类型的对象
这是多态的一种,父类的引用变量指向子类对象
作者: 袁梦希    时间: 2013-5-4 22:07
一句简单的话说   就是集合中可以装任意类型的的元素   也就是Object类型的。
所以取元素的时候也应该是Object类型的。

如果你想限制一下他的返回值类型,可以强转或者加泛型。
作者: 吴建昆    时间: 2013-5-4 22:22
这个需要了解下java 中的泛型 就是类似这样的HashMap<String,String> hashMap=new HashMap<String,String>();
哪果你指定了存入集合内的参数类型,那样的话你调迭代器的next方法就返回Entry<String, String>  entry=it.next();
这个是java为了防止程序员对于类型不明确,而进行类型强转,造成类型转换的异常
作者: 刘学明       时间: 2013-5-4 22:39
本帖最后由 刘学明    于 2013-5-4 22:42 编辑

ArrayList al = new ArrayList();    // 你存储的时候不知道是什么引用类型的 在不定义泛型的情况下 集合中可以装任意类型的的元素 也就是Object      
   
Iterator it = al.iterator();    //    那么取出的时候也是一样的道理   如果不定义泛型  迭代器内部也可以装任意类型的,  
这就是典型的多态啊  Object 也就是父类的引用指向了子类  那么你在使用的时候当然也需要强转一下。

PS: 如果集合不是Object类型 那么有些类型的引用就肯定不能存 那么也就失去了集合的意义  迭代器也是同样的道理 。




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