我想創建一個迭代器的迭代器,支持Java中的任何類型。目的是遍歷迭代器的對象。迭代器的迭代器
但我有一個類型不匹配,我看不到如何初始化我的實現。
我想到的第一個想法是讓我的課程實現Iterator<Iterator<T>>
,但這不起作用,因爲下一個方法的簽名public Iterator<T> next()
不符合我想要做的事。我不想返回Iterator<T>
,我想返回類型T
。
所以我創建另一個界面非常相似的Iterator接口:
public interface MyIterator<T extends Iterator<T>> {
public boolean hasNext();
public T next();
}
我的迭代器需要一個類型T是一個迭代器。下面是我的實現(不刪除):
public class IteratorOfIterator<T extends Iterator<T>> implements MyIterator<T> {
private T[] iterators;
private T currentIterator;
private int currentIndex;
public IteratorOfIterator(T[] iterators){
this.iterators = iterators;
this.currentIndex = 0;
this.currentIterator = iterators[currentIndex];
}
public boolean hasNext() {
return currentIndex < iterators.length - 1 || currentIterator.hasNext();
}
public T next() {
if(!this.currentIterator.hasNext()){
currentIndex++;
this.currentIterator = iterators[currentIndex];
}
return currentIterator.next();
}
如果我想測試我的迭代器,但我有一個類型不匹配,我怎麼能初始化呢?這裏有一個例子我想做的事:
String[] strings = {"peanut","butter","coco","foo","bar"};
Object[] iterators = {strings};
MyIterator<String> myIterator = new IteratorOfIterator<String>(iterators); // <-- in this line
錯誤說:Bound mismatch: The type String is not a valid substitute for the bounded parameter <T extends Iterator<T>> of the type IteratorOfIterator<T> IteratorOfIterator.java
我怎樣才能解決這個問題?非常感謝您的建議。 PS:我完全理解這個問題。我明白,例如,String類型沒有實現MyIterator接口,所以這就是爲什麼它不是一個好的替代品。我的問題是我不知道怎樣才能
好吧,我要檢查一下 – Dimitri 2013-04-30 10:33:12