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

org.apache.velocity.util.ArrayIterator Maven / Gradle / Ivy

There is a newer version: 6.2.20
Show newest version
package org.apache.velocity.util;

/*
 * Licensed to the Apache Software Foundation (ASF) under one
 * or more contributor license agreements.  See the NOTICE file
 * distributed with this work for additional information
 * regarding copyright ownership.  The ASF licenses this file
 * to you under the Apache License, Version 2.0 (the
 * "License"); you may not use this file except in compliance
 * with the License.  You may obtain a copy of the License at
 *
 *   http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing,
 * software distributed under the License is distributed on an
 * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
 * KIND, either express or implied.  See the License for the
 * specific language governing permissions and limitations
 * under the License.    
 */

import java.util.Iterator;
import java.util.NoSuchElementException;
import java.lang.reflect.Array;


/**
 *  

* An Iterator wrapper for an Object[]. This will * allow us to deal with all array like structures * in a consistent manner. *

*

* WARNING : this class's operations are NOT synchronized. * It is meant to be used in a single thread, newly created * for each use in the #foreach() directive. * If this is used or shared, synchronize in the * next() method. *

* * @author Jason van Zyl * @author Geir Magnusson Jr. * @version $Id: ArrayIterator.java 463298 2006-10-12 16:10:32Z henning $ */ public class ArrayIterator implements Iterator { /** * The objects to iterate. */ private Object array; /** * The current position and size in the array. */ private int pos; private int size; /** * Creates a new iterator instance for the specified array. * * @param array The array for which an iterator is desired. */ public ArrayIterator(Object array) { /* * if this isn't an array, then throw. Note that this is * for internal use - so this should never happen - if it does * we screwed up. */ if ( !array.getClass().isArray() ) { throw new IllegalArgumentException( "Programmer error : internal ArrayIterator invoked w/o array"); } this.array = array; pos = 0; size = Array.getLength( this.array ); } /** * Move to next element in the array. * * @return The next object in the array. */ public Object next() { if (pos < size ) return Array.get( array, pos++); /* * we screwed up... */ throw new NoSuchElementException("No more elements: " + pos + " / " + size); } /** * Check to see if there is another element in the array. * * @return Whether there is another element. */ public boolean hasNext() { return (pos < size ); } /** * No op--merely added to satify the Iterator interface. */ public void remove() { throw new UnsupportedOperationException(); } }




© 2015 - 2024 Weber Informatics LLC | Privacy Policy