执行我的无知。接口概念。通过考虑以下代码,帮助我解决所涉及的概念:
import java.util.*;
class TestCollection1
{
public static void main(String args[]){
ArrayList<String> al=new ArrayList<String>();
al.add("Ravi");
al.add("Vijay");
al.add("Ravi");
al.add("Ajay");
***Iterable i=al.iterator();
Iterator itr=i;***
/*The following code above has been written intentionally to check scope and
properties of Iterable i ...Output Fails in this Case*/
Iterator itr=a1.iterator();
//On using above and deleting iterable part ,We get the desired Output
while(itr.hasNext()){
System.out.println(itr.next());
}
}
}
输出失败:
1.为什么输出在第一种情况下失败.Iterable是一个接口,它有方法iterator()。因此它的refrence变量应该能够存储由a1.iterator()返回的迭代器对象/ refrence / iterator;
2.Iterator接口,甚至没有iterator()方法工作正常。怎么样?
答案 0 :(得分:3)
Iterable i=al.iterator();
失败,因为al.iterator()
会返回Iterator
(具有hasNext()
,next()
&amp; remove()
方法的界面,不是Iterable
(具有iterator()
方法的接口)。
Iterable i = al;
将起作用,因为al
是ArrayList
,它实现了Iterable
接口。
这也是
的原因Iterator itr = al.iterator();
有效 - Iterable
界面有iterator()
方法。