import java.util.*;
public class IteratorTest {
public static void main(String[] args) {
Collection c = new HashSet();
c.add("A");
c.add("B");
c.add("C");

for(Iterator i=c.iterator(); i.hasNext();) {
String s = (String)i.next();
}

System.out.println(c);
}
}
Iterator i=c.iterator(); 请问这句话是什么意思?方法可以返回一个接口吗?如果能,那么i.next()是抽象的,怎么能用呢?如果i是指向String对象的一个引用,因为String类没有实现Iterator中的next()方法,那么i.next()还是不能调用啊?
这到底是什么意思啊?真迷惑,请各位高手指点迷津,谢谢!

解决方案 »

  1.   

    Collection c = new HashSet(); 是向上转型
    c.iterator()把c转型了,实际上i是最初的HashSet()
      

  2.   

    Iterator是个迭代器   
    你自己在API里面看下Iterator这个类,里面有其方法介绍的
      

  3.   

    boolean Iterator.hasNext();
    object  Iterator.next();
      

  4.   

    iterator()是Collection的迭代器,它返回集合中元素对象
      

  5.   

    学习。
    我这也有一个和iterator接口相关的一个程序,大家帮忙看看是哪里出问题了:
    public static void main(String[] args) {   
            Vector <String> vecStr=new Vector <String>(); //vecStr记录信息 
            vecStr.add("Monday"); 
            vecStr.add("Tuesday"); 
            vecStr.add("Wednesday"); 
            String text="Monday+sd- Tuesday{}ds";//用于匹配的字符串 
            String temp; //临时字符串 
            Pattern pw=Pattern.compile("(\\w+)"); 
            Matcher m=pw.matcher(text); 
            Iterator <String> it=vecStr.iterator(); 
            while(m.find()){ 
                   temp=m.group(); 
    //               System.out.println(temp);  //测试, m 匹配出的是“Monday sd Tuesday ds”  
                   it=vecStr.iterator(); 
                   while(it.hasNext()){  //it 迭代遍历vecStr每一成员 
    //                      System.out.println(it.next());   // 测试,表明vecStr的每一个成员的确都有变量到 
                          if(temp==it.next()){ 
                                 System.out.println(temp);    //此行代码经调试未执行,不知为什么 
                          } 
                   } 
            } 
    } 我碰见的问题是:按我自己的程序走法,结果应该输出匹配出的Monday Tuesday, 
    但是实际没有输出。经调试,发现问题出在while(it.hasNext()){...}里面。 各位大虾,帮忙看看哪里出问题了(或者提示一种正确的写法也可),谢谢!! 
      

  6.   

    那HashSet类也没有实现Iterator接口啊,i怎么能指向HashSet()的对象呢
      

  7.   

    它返回的是一个能遍历它内容的迭代器,跟hashset实现了什么接口没有关系,你可以看看它的源代码就明白了