我有一堆通用接口(interface)和类
public interface IElement {
// omited
}
class Element implements IElement {
// omited
}
public interface IElementList<E extends IElement> extends Iterable {
public Iterator<E> iterator();
}
class ElementList implements IElementList<Element> {
public Iterator<Element> iterator() {
// omited
}
}
public interface IElementListGroup<E extends IElementList<? extends IElement>> {
public E getChosenElementList();
}
class ElementListGroup implements IElementListGroup<ElementList> {
public ElementList getChosenElementList() {
// omited
}
}
然后是一个简单的代码
ElementListGroup group;
for(Element e : group.getChosenElementList())
{
// omited
}
带有 for 关键字的行会抛出“无法从元素类型对象转换为元素”编译器错误。
提前致谢。
最佳答案
IElementList
需要实现Iterable<E>
。否则,接口(interface)指定 Iterator iterator()
,不是Iterator<E> iterator()
。这使得编译器认为您正在迭代 Object
s。
我做了这个更改,并且编译得很好(在添加了一些空返回之后)。
关于java - 为什么这个通用接口(interface)堆栈不起作用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/314600/