# Class UnmodifiableIterator<E>

java.lang.Object
org.apache.commons.collections4.iterators.UnmodifiableIterator<E>

Type Parameters:
  `E` - the type of elements returned by this iterator.

All Implemented Interfaces:
  `Iterator<E>`, `Unmodifiable`

public final class UnmodifiableIterator<E> extends Object implements Iterator<E>, Unmodifiable
Decorates an iterator such that it cannot be modified.

Attempts to modify it will result in an UnsupportedOperationException.

Since:
  3.0

- ## Method Summary

  Modifier and Type
  Method
  Description
  `boolean`
  `hasNext()`
  `E`
  `next()`
  `void`
  `remove()`
  `static <E> Iterator<E>`
  `unmodifiableIterator(Iterator<? extends E> iterator)`
  Decorates the specified iterator such that it cannot be modified.

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

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

  ### Methods inherited from interface java.util.Iterator

  `forEachRemaining`

- ## Method Details

  - ### unmodifiableIterator

    public static <E> Iterator<E> unmodifiableIterator(Iterator<? extends E> iterator)
    Decorates the specified iterator such that it cannot be modified.

    If the iterator is already unmodifiable it is returned directly.

    Type Parameters:
      `E` - the element type
    Parameters:
      `iterator` - the iterator to decorate
    Returns:
      a new unmodifiable iterator
    Throws:
      `NullPointerException` - if the iterator is null

  - ### hasNext

    public boolean hasNext()
    Specified by:
      `hasNext` in interface `Iterator<E>`

  - ### next

    public E next()
    Specified by:
      `next` in interface `Iterator<E>`

  - ### remove

    public void remove()
    Specified by:
      `remove` in interface `Iterator<E>`