Implementé un personalizado java.util.Iterator usando un recurso que debería liberarse al final usando un método close()
. Ese recurso podría ser un java.sql.ResultSet, un java.io.InputStream etc ...Cerrando un java.util.Iterator
public interface CloseableIterator<T> extends Iterator<T>
{
public void close();
}
Algunas bibliotecas externas que utilizan este iterador puede no saber que debe estar cerrada. por ejemplo:
public boolean isEmpty(Iterable<T> myiterable)
{
return myiterable.iterator().hasNext();
}
En ese caso, ¿hay alguna manera de cerrar este iterador?
Actualización: muchas gracias por las respuestas actuales. Daré un (+1) a todos. Ya cierro el iterador cuando tieneNext() devuelve falso. Mi problema es cuando la iteración del ciclo rompe antes de la última iteración como se muestra en mi ejemplo.
obras para seguro, pero puede no ser muy eficiente de la memoria o el almacenamiento en caché puede llegar a ser una operación muy pesada. – Eric