Cerrar un java.util.Iterator

He implementado una costumbrejava.util.Iterator usando un recurso que debería ser lanzado al final usando unclose() método. Ese recurso podría ser unjava.sql.ResultSet, unajava.io.InputStream etc ...

public interface CloseableIterator<T> extends Iterator<T>
  {
  public void close();
  }

Es posible que algunas bibliotecas externas que usan este iterador no sepan que debe estar cerrado. p.ej:

public boolean isEmpty(Iterable<T> myiterable)
 {
 return myiterable.iterator().hasNext();
 }

En ese caso, ¿hay alguna manera de cerrar este iterador?

Actualizar: Muchas gracias por las respuestas actuales. Daré un (+1) a todos. Ya cierro el iterador cuandohasNext () devuelve falso Mi problema es cuando se rompe la iteración del bucleantes de la última iteración como se muestra en mi ejemplo.

Respuestas a la pregunta(7)

Su respuesta a la pregunta