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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 余雷 中级黑马   /  2013-5-4 20:53  /  1563 人查看  /  6 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

为什么迭代器的next方法返回值类型是Object呢?

评分

参与人数 1技术分 +1 收起 理由
黄玉昆 + 1

查看全部评分

6 个回复

正序浏览
本帖最后由 刘学明    于 2013-5-4 22:42 编辑

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

PS: 如果集合不是Object类型 那么有些类型的引用就肯定不能存 那么也就失去了集合的意义  迭代器也是同样的道理 。
回复 使用道具 举报
这个需要了解下java 中的泛型 就是类似这样的HashMap<String,String> hashMap=new HashMap<String,String>();
哪果你指定了存入集合内的参数类型,那样的话你调迭代器的next方法就返回Entry<String, String>  entry=it.next();
这个是java为了防止程序员对于类型不明确,而进行类型强转,造成类型转换的异常

评分

参与人数 1技术分 +1 收起 理由
黄玉昆 + 1

查看全部评分

回复 使用道具 举报
一句简单的话说   就是集合中可以装任意类型的的元素   也就是Object类型的。
所以取元素的时候也应该是Object类型的。

如果你想限制一下他的返回值类型,可以强转或者加泛型。
回复 使用道具 举报
因为Object是所有类的父类
用迭代器迭代集合的时候,不确定集合中的元素是什么类型的对象
这是多态的一种,父类的引用变量指向子类对象

评分

参与人数 1技术分 +1 收起 理由
黄玉昆 + 1

查看全部评分

回复 使用道具 举报
从哪里看的返回值是Object的
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马