私が取り組んでいるプロジェクトに問題があります。起こる必要があることの1つは、インターフェイスを実装するイテレータを返し、匿名クラスを使用するインスペクタを作成することです。コンテキストはファイルシステムであり、基本的にイテレータはイテレータが動作するディレクトリの内容を返すだけです。だからここに私は、現時点で得たコードは次のとおりです。匿名クラスのイテレータとしてのインターフェイスの実装:問題を発行する
Directoryのクラス:
public class Directory {
...
public Iterator<DiskItem> iterator() {
return new DirectoryIterator() {
int cursor = 1;
int end = Directory.this.getNbItems();
public boolean hasNext() {
return this.cursor < end;
}
public DiskItem next(){
if(this.hasNext()) {
Directory.this.getItemAt(this.cursor++);
}
else
throw new NoSuchElementException();
}
@Override
public int getNbRemainingItems() {
return this.end - this.cursor;
}
@Override
public DiskItem getCurrentItem() throws IndexOutOfBoundsException {
return Directory.this.getItemAt(this.cursor);
}
@Override
public void advance() {
if(this.hasNext()) {
this.cursor++;
}
else
throw new NoSuchElementException();
}
@Override
public void reset() {
this.cursor = 1;
}
}
}
のDirectoryIteratorインタフェース:
public interface DirectoryIterator {
int getNbRemainingItems();
DiskItem getCurrentItem() throws IndexOutOfBoundsException;
void advance();
void reset();
}
私がいる問題がエラーに
Type mismatch: cannot convert from new DirectoryIterator(){} to Iterator<DiskItem>
を得ています
これはDirectoryIteratorに型イテレータがないためですが、int型であるためです私はそれをどんなタイプでも与えることはできません。
誰でもこの問題を解決する方法はありますか?事前に
おかげ
あなたは 'DirectoryIterator'は'イテレータ ' –
PurityLake
を実装して作ることができるそれはこの答え作る(および実装対が拡張修正)ではないのはなぜイテレータからのDirectoryIteratorの延長ではなく、道具 –
@PurityLake以上ですか? – Kayaman