package org.infinispan.objectfilter.impl.util; import java.lang.reflect.Array; import java.util.Iterator; /** * An immutable Iterator for arrays. * * @author anistor@redhat.com * @since 7.0 */ public final class ArrayIterator<T> implements Iterator<T> { /** * An array of whatever type. */ private final Object array; /** * Current position. */ private int pos = 0; public ArrayIterator(Object array) { if (array == null) { throw new IllegalArgumentException("Argument cannot be null"); } if (!array.getClass().isArray()) { throw new IllegalArgumentException("Argument is expected to be an array"); } this.array = array; } public boolean hasNext() { return pos < Array.getLength(array); } public T next() { return (T) Array.get(array, pos++); } public void remove() { throw new UnsupportedOperationException("This iterator is immutable"); } }