package util; import java.util.AbstractList; import java.util.List; import java.lang.reflect.Array; /** * ArraySlice for array of unknown type (but containing objects, not primitive * types). * * @author Norswap * */ public class UArraySlice extends AbstractList<Object> implements List<Object> { /**************************************************************************/ private final Object array; /**************************************************************************/ private final int start, end; /**************************************************************************/ public UArraySlice(Object array) { this(array, 0, Array.getLength(array)); } /**************************************************************************/ public UArraySlice(Object array, int start, int end) { this.array = array; this.start = start; this.end = end; } /**************************************************************************/ @Override public int size() { return end - start; } /**************************************************************************/ @Override public Object get(int index) { return Array.get(array, start + index); } /**************************************************************************/ @Override public Object set(int index, Object element) { Object out = get(index); Array.set(array, start + index, element); return out; } }