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

© x378320002 中级黑马   /  2013-5-23 16:20  /  1317 人查看  /  1 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 x378320002 于 2013-5-24 08:38 编辑

最近学习集合框架中遇到一个疑问,集合内的对象往外去的时候是用迭代器,
大致过程我理解的是:
1,集合对象调用collection接口内的迭代器功能
2,该功能返回一个迭代器接口类型的对象
3,由该迭代器对象再调用集合内的next取出功能,完成取出
   因为集合对象内的next功能复写了迭代器接口内的next功能

我不懂的是为什么要间接的  先用collection接口调出迭代器,再用迭代器调用next呢,
为什么不能把next等功能放在collection接口内,由collection接口调用next功能呢,
我看了源码,知道集合内的迭代器其实就是个内部类,如果不写内部类,直接把next功能定义在
集合内,由collection接口调用,我发现也行啊,求解释,用迭代器有什么优势或者好处?

评分

参与人数 1技术分 +1 收起 理由
刘胜寒 + 1

查看全部评分

1 个回复

倒序浏览
接口是用来功能扩展的。
如果你把迭代器的hasNext()和next()功能定义在collection接口中,你每次实现collection接口时,无论你需不需要取出集合中的元素,都要去重写这两个功能。
如果把这两个功能封装成一个接口,就可以在需要取出集合元素时再去实现这个接口,重写里面的方法。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马