En Java, necesito devolver un iterador de mi método. Mis datos provienen de otro objeto que generalmente me puede dar un iterador, así que puedo devolverlo, pero en algunas circunstancias los datos subyacentes son nulos. Por coherencia, quiero devolver un iterador "vacío" en ese caso para que las personas que llaman no tengan que probar nulo.iterador de Java sobre una colección vacía de un tipo parametrizado
que quería escribir algo como:
public Iterator<Foo> iterator() {
if (underlyingData != null) {
return underlyingData.iterator(); // works
} else {
return Collections.emptyList().iterator(); // compiler error
}
}
Pero el compilador de Java se queja de la Iterator<Object>
en lugar de regresar Iterator<Foo>
. Casting a (Iterator<Foo>)
tampoco funciona.
Acabo de descubrir que, a veces, tratar de ser rápido le ralentiza. Escribí una implementación de Iterador vacío y volví aquí para encontrar que había estado en un camino de conejito. +1 –
En Java 1.7 Colecciones API se extendió con 'Collections.emptyIterator()'. –