2016-03-02 116 views
0

我是Java新手,我正在尝试了解迭代器的Iterable &的实现。Iterable&Iterator实现问题(JAVA)

import java.util.Iterator; 
import java.util.LinkedList; 
import java.util.NoSuchElementException; 

public class ClassMates implements Iterable{ 
    private String className; 
    private LinkedList<String> nameList; 

    public ClassMates(String className){ 
     this.className = className; 
     this.nameList = new LinkedList<String>(); 
    } 

    public void addName(String name){ 
     nameList.add(name); 
    } 

    public LinkedList<String> getNameList() { 
     return nameList; 
    } 

    @Override 
    public Iterator<String> iterator() { 
     return new IteratorClass(); 
    } 

    // Inner Class 
    private class IteratorClass implements Iterator<String>{ 
     private int index; 

     public IteratorClass(){ 
      this.index = 0; 
     } 

     @Override 
     public boolean hasNext() { 
      return index < nameList.size(); 
     } 

     @Override 
     public String next() { 
      if(hasNext()){ 
       int i = index; 
       index++; 
       System.out.println("This is "+ i); 
       return nameList.get(i); 
      } 
      throw new NoSuchElementException(); 
     } 
     @Override 
     public void remove() { 
      throw new UnsupportedOperationException(); 
     } 
    } 
} 

我的问题是:当我完成实施和尝试应用的for-each的“迭代”的对象,编译器说类型不匹配。

这里是在main()执行的申请,每个:

public class Main { 

    public static void main(String[] args) { 
    ClassMates classMates = new ClassMates("03-01"); 
    classMates.addName("Classmate 1"); 
    classMates.addName("Classmate 2"); 
    classMates.addName("Classmate 3"); 
    classMates.addName("Classmate 4"); 

    for(String name : classMates){   
    //HERE! the compiler report "String" is not match the return type of "classMates" 
     System.out.println(name); 
    } 
} 

任何人都可以点我出了问题?

谢谢!!!

回答

0

当你的类将通过遍历字符串,你应该指定模板类型:

public class ClassMates implements Iterable<String> 
+0

感谢delephin! 当我浏览API后,我注意到我应该用替换。 感谢您的快速帮助! –

+0

乐于帮助,欢迎来到堆栈溢出。如果此答案或任何其他人解决了您的问题,请将其标记为已接受。 – delephin