[英]Why doesn't this generic interface stack work?
我有一堆通用接口和類
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>
。 否則,接口指定Iterator iterator()
,而不是Iterator<E> iterator()
。 這使編譯器認為您正在遍歷Object
。
我進行了此更改,並且編譯良好(在添加了一些null返回值之后)。
您的函數返回一個ElementList而不是Element,並且ElementList不是在Element上可迭代的
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.