All Downloads are FREE. Search and download functionalities are using the official Maven repository.

almost.functional.utils.ImmutableIterator Maven / Gradle / Ivy

Go to download

Almost Functional is very low impact functional classes inspired by guava, jdk 1.8 and various others.

There is a newer version: 1.8
Show newest version
/*
 * Copyright (c) 2013-2014, [email protected]
 *
 * Permission to use, copy, modify, and/or distribute this software for any purpose with or
 * without fee is hereby granted, provided that the above copyright notice and this permission
 * notice appear in all copies.
 *
 * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH REGARD TO
 * THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO EVENT
 * SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR
 * ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF
 * CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE
 * OR PERFORMANCE OF THIS SOFTWARE.
 */

package almost.functional.utils;

import java.util.Iterator;

/**
 * Iterator that does not support remove, making it immutable.
 * @since 1.2
 * @param  the type of elements returned by this iterator
 */
public abstract class ImmutableIterator implements Iterator {

	/**
	 * Make an iterator immutable.
	 * @param iterator the iterator
	 * @param  the type the iterator returns
	 * @return an immutable iterator
	 */
	public static  ImmutableIterator makeImmutable(final Iterator iterator) {
		return new ImmutableIterator() {
			@Override
			public boolean hasNext() {
				return iterator.hasNext();
			}

			@Override
			public E next() {
				return iterator.next();
			}
		};
	}

	/**
	 * @throws java.lang.NoSuchMethodError
	 */
	@Override
	public void remove(){
		throw new NoSuchMethodError("Iterator is immutable");
	}

}




© 2015 - 2024 Weber Informatics LLC | Privacy Policy