collection接口的iterator方法返回类型是接口类型,怎么理解?
这很正常,你直接用接口调用里面的方法就可以了。你不用关心具体实现接口的类是哪个。
不是太明白你的问题,接口类型又如何呢。
实现collection接口的对象返回一个实现了Iterator接口的对象,通过返回的Iterator对象提供的各种方便的方法来操作集合。
就好比计算机提供USB接口,你插上打印机、扫描仪、手机、U盘都可以,计算机认这个接口,而不管具体你是什么设备插进来了。
如果计算机不是提供USB接口,而是打印机一个口、扫描仪一个口、手机一个口……(别忘了光手机还有很多种呢),那多么麻烦。
一个道理,程序如果返回的不是接口,而是具体类型,你的调用端还得先判断是什么类型,然后定义这个类型的变量接收,才能调用。更糟糕的是,有时候你的主程序先写好(比如插件程序),那么你的主程序根本不可能事先知道是什么类型。
Iterator是用来取出集合中的元素,对于不同的集合取出的方法也不样,所以就定义了一个接口Iterator,让不同的集合在内部去实现Iterator,collection接口的iterator方法返回类型内部实现了Iterator,
是指向一个实现了该接口的类,就好比父类引用指向子类对象。
JavaSE中 用于遍历的
直接调接口的方法难道有问题吗?
原理是接口的回调,调用实现类中的接口方法,返回接口对象。楼主可以百度下接口的回调。