【发布时间】:2011-03-18 20:02:59
【问题描述】:
我想要一个泛型类,它实现类型 T 的 Iterable(我们称之为 ImplIterable),它在某个类(不是泛型类类型)上实现 Iterable 接口;例如:
public class ImplIterable <T> implements Iterable<A> {
private A[] tab;
public Iterator<A> iterator() {
return new ImplIterator();
}
// doesn't work - but compiles correctly.
private class ImplIterator implements Iterator<A> {
public boolean hasNext() { return true; }
public A next() { return null; }
public void remove() {}
}
}
其中 A 是某个类。现在,这段代码将无法编译:
ImplIterable iable = new ImplIterable();
for (A a : iable) {
a.aStuff();
}
但这会:
Iterable<A> = new ImplIterable();
for (A a : iable) {
a.aStuff();
}
我不明白为什么后者不能编译,如果 ImplIterable 正确实现了可迭代,为什么我不能迭代它。我是不是做错了什么/是否有针对此类问题的解决方法?
【问题讨论】:
-
它给出了什么错误?
-
incompatible types found : java.lang.Object required: java.lang.String