2013-06-06 31 views
0

我有一個如下代碼。帶迭代器的java通用數組

public class DefaultIterator<E> implements Iterator<E> { 
private E[] array; 
private int i = 0; 

public DefaultIterator(E[] array) { 
    this.array = array; 
} 

@Override 
public boolean hasNext() { 
    return false; 
} 

@Override 
public E next() { 
    return array[i++]; 
} 

@Override 
public void remove() { 

} 

}

// here is my execution. 
    public Iterator<String> createNewIterator(Iterator<String>... generalIterators) { 
    return new DefaultIterator<Iterator<String>[]>(generalIterators); 
} 

我得到的編譯錯誤在執行代碼。有人可以解釋爲什麼它失敗了,以及如何解決它?

謝謝。

+0

什麼是編譯錯誤?如果你能包括它,它將會有所幫助。 –

+0

構造函數DefaultIterator []>(Iterator [])未定義 – user826323

+0

Mac,我得到了這個。無法從DefaultIterator >轉換爲迭代器 user826323

回答

3

因此,抱怨是沒有任何泛型類型在字段聲明,構造函數聲明和方法聲明之間匹配。

你想:

public Iterator<String> createNewIterator(String... generalIterators) { 
    return new DefaultIterator<String>(generalIterators); 
} 
+0

我想要'迭代器'作爲返回類型。 – user826323

+0

然後第二個例子應該可以正常工作。 –

0

你的返回類型比預期的又一個! DefaultIterator<Iterator<String>[]>與您的返回類型不兼容Iterator<String>Choose DefaultIterator<Iterator<String>[]>,這應該解決它。