Javaでは、私のメソッドからIteratorを返す必要があります。私のデータは通常、私にイテレータを与えることができるので、私はそれを返すことができる別のオブジェクトから来ますが、場合によっては基底のデータがnullです。一貫性を保つために、その場合は "空の"イテレータを返したいので、呼び出し側がnullをテストする必要はありません。パラメータ化された型の空のコレクションのJavaイテレータ
私のような何か書きたい:
public Iterator<Foo> iterator() {
if (underlyingData != null) {
return underlyingData.iterator(); // works
} else {
return Collections.emptyList().iterator(); // compiler error
}
}
をしかし、Javaコンパイラは戻っIterator<Object>
代わりのIterator<Foo>
について文句を言います。 (Iterator<Foo>)
へのキャスティングも機能しません。
私はちょうど時々迅速になろうとしていることを発見したが、あなたが遅くなります。私は空のイテレーターの実装を書いて、私がバニー・トレイルに乗っていたのを見つけるためにここに戻りました。 +1 –
Java 1.7 Collections APIでは 'Collections.emptyIterator()'が拡張されました。 –