我正在尝试创建自己的迭代器并在foreach循环中使用它。但是得到一个错误,即Object无法从Object转换为Integer。 这段代码的目的是理解迭代器接口。
package com.java.collections;
import java.util.Iterator;
public class Counter implements Iterable {
int count;
Counter(int count){
this.count = count;
}
@Override
public Iterator iterator() {
// TODO Auto-generated method stub
return new Iterator<Integer>() {
private int i = 0;
@Override
public boolean hasNext() {
// TODO Auto-generated method stub
return i < count;
}
@Override
public Integer next() {
// TODO Auto-generated method stub
i++;
return i;
}
@Override
public void remove() {
// TODO Auto-generated method stub
}
};
}
}
package com.java.collections;
public class TestCounter {
public static void main(String[] args) {
new TestCounter().test();
}
void test() {
for(Integer i : new Counter(5))
{
}
}
}
答案 0 :(得分:2)
您必须使用具有可迭代的通用类型(在您的情况下为Integer
)
public class Counter implements Iterable<Integer> {
...
}
答案 1 :(得分:2)
Iterable接口可以是用户泛型,因为你的计数器是一个整数,你应该指定:
public class Counter implements Iterable<Integer> {
//other methods and code omitted
public Iterator<Integer> iterator() {
//same code as in posted question
}
}
答案 2 :(得分:0)
仅需要array or Iterable