collection接口的iterator方法返回类型是接口类型,怎么理解?
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。
Iterator
是用来取出集合中的元素,对于不同的集合取出的方法也不样,所以就定义了一个接口Iterator
,让不同的集合在内部去实现Iterator
,collection
接口的iterator方法返回类型内部实现了Iterator
,就好比计算机提供USB接口,你插上打印机、扫描仪、手机、U盘都可以,计算机认这个接口,而不管具体你是什么设备插进来了。
如果计算机不是提供USB接口,而是打印机一个口、扫描仪一个口、手机一个口……(别忘了光手机还有很多种呢),那多么麻烦。
一个道理,程序如果返回的不是接口,而是具体类型,你的调用端还得先判断是什么类型,然后定义这个类型的变量接收,才能调用。更糟糕的是,有时候你的主程序先写好(比如插件程序),那么你的主程序根本不可能事先知道是什么类型。