簡體   English   中英

為什么這個通用接口堆棧不起作用?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM