Package org.eclipse.rdf4j.common.iteration

## Class DelayedIteration<E,​X extends Exception>

- java.lang.Object
- - org.eclipse.rdf4j.common.iteration.AbstractCloseableIteration<E,​X>
  - - org.eclipse.rdf4j.common.iteration.DelayedIteration<E,​X>

- All Implemented Interfaces:
    `AutoCloseable`, `CloseableIteration<E,​X>`, `Iteration<E,​X>`
  Direct Known Subclasses:
    `OrderIterator`, `QueryEvaluationStep.DelayedEvaluationIteration`

      public abstract class DelayedIteration<E,​X extends Exception>
      extends AbstractCloseableIteration<E,​X>

  An iteration that delays the creation of the underlying iteration until it is being accessed. This is mainly useful for situations where iteration creation adds considerable overhead but where the iteration may not actually be used, or where a created iteration consumes scarce resources like JDBC-connections or memory. Subclasses must implement the createIteration method, which is called once when the iteration is first needed.

- - ### Constructor Summary

    Constructors
    Modifier | Constructor | Description
    --- | --- | ---
    `protected` | `DelayedIteration()` | Creates a new DelayedIteration.

  - ### Method Summary

    All Methods Instance Methods Abstract Methods Concrete Methods
    Modifier and Type | Method | Description
    --- | --- | ---
    `protected abstract Iteration<? extends E,​? extends X>` | `createIteration()` | Creates the iteration that should be iterated over.
    `protected void` | `handleClose()` | Closes this iteration as well as the underlying iteration if it has already been created and happens to be a `CloseableIteration`.
    `boolean` | `hasNext()` | Calls the hasNext method of the underlying iteration.
    `E` | `next()` | Calls the next method of the underlying iteration.
    `void` | `remove()` | Calls the remove method of the underlying iteration.

    - ### Methods inherited from class org.eclipse.rdf4j.common.iteration.AbstractCloseableIteration

      `close, isClosed`

    - ### Methods inherited from class java.lang.Object

      `clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

    - ### Methods inherited from interface org.eclipse.rdf4j.common.iteration.Iteration

      `stream`

- - ### Constructor Detail

    - #### DelayedIteration

          protected DelayedIteration()

      Creates a new DelayedIteration.

  - ### Method Detail

    - #### createIteration

          protected abstract Iteration<? extends E,​? extends X> createIteration()
                                                                               throws X extends Exception

      Creates the iteration that should be iterated over. This method is called only once, when the iteration is first needed.
      Throws:
        `X extends Exception`

    - #### hasNext

          public boolean hasNext()
                          throws X extends Exception

      Calls the hasNext method of the underlying iteration.
      Returns:
        true if the iteration has more elements.
      Throws:
        `X`
        `X extends Exception`

    - #### next

          public E next()
                 throws X extends Exception

      Calls the next method of the underlying iteration.
      Returns:
        the next element in the iteration.
      Throws:
        `X extends Exception`

    - #### remove

          public void remove()
                      throws X extends Exception

      Calls the remove method of the underlying iteration.
      Throws:
        `X extends Exception`

    - #### handleClose

          protected void handleClose()
                              throws X extends Exception

      Closes this iteration as well as the underlying iteration if it has already been created and happens to be a `CloseableIteration`.
      Overrides:
        `handleClose` in class `AbstractCloseableIteration<E,​X extends Exception>`
      Throws:
        `X`
        `X extends Exception`