黑马程序员技术交流社区
标题:
迭代器问题
[打印本页]
作者:
余雷
时间:
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