/* Copyright 2006 by Sean Luke and George Mason University Licensed under the Academic Free License version 3.0 See the file "LICENSE" for more information */ package sim.util; /** A simple interface (simpler than List) for accessing random-access objects without changing their size. Adhered to by Bag, IntBag, and DoubleBag */ public interface Indexed { /** Should return the base component type for this Indexed object, or null if the component type should be queried via getValue(index).getClass.getComponentType() */ public Class componentType(); public int size(); /** Throws an IndexOutOfBoundsException if index is inappropriate, and IllegalArgumentException if the value is inappropriate. Not called set() in order to be consistent with getValue(...)*/ public Object setValue(final int index, final Object value) throws IndexOutOfBoundsException, IllegalArgumentException; /** Throws an IndexOutOfBoundsException if index is inappropriate. Not called get() because this would conflict with get() methods in IntBag etc. which don't return objects. */ public Object getValue(final int index) throws IndexOutOfBoundsException; }