我是Java新手,我正在努力学习Iterable & Iterator的实现。
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-每一个应用到“迭代”对象时,编译器说类型不匹配。
以下是应用程序的主要()执行-每个:
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);
}
}有人能帮我指出问题吗?
谢谢!
发布于 2016-03-02 15:36:31
由于类将遍历字符串,因此应该指定模板类型:
public class ClassMates implements Iterable<String>https://stackoverflow.com/questions/35751083
复制相似问题