Я реализовал пользовательский java.util.Iterator, используя ресурс, который должен быть выпущен в конце, используя метод close()
. Этот ресурс может быть java.sql.ResultSet, java.io.InputStream и т.д.
public interface CloseableIterator<T> extends Iterator<T>
{
public void close();
}
Некоторые внешние библиотеки, использующие этот итератор, могут не знать, что он должен быть закрыт. например:
public boolean isEmpty(Iterable<T> myiterable)
{
return myiterable.iterator().hasNext();
}
В этом случае существует ли способ закрыть этот итератор?
Обновление: большое спасибо за текущие ответы. Я дам (+1) всем. Я уже закрываю Iterator, когда hasNext() возвращает false. Моя проблема заключается в том, что повторение цикла прерывается до последней итерации, как показано в моем примере.