So I'm trying to implement a CircularBuffer in Java, to which I can access the underlying array:
/* package protected */ class CircularBuffer<E> {
private final Object[] mArray;
private int mSize;
private int headPointer = 0;
private CircularBuffer(int size) {
mSize = size;
mArray = new Object[mSize];
}
private void add(E elem) {
mArray[headPointer] = elem;
headPointer = (headPointer + 1) % mSize;
}
public E[] getArray() {
return (E[]) this.mArray;
}
}
I want to use this with Enums and various primitives (specifically booleans), but everything I call myEnum[] = myCircularBuffer.getArray(), I get a:
java.lang.ClassCastException: java.lang.Object[] cannot be cast to com.package.myEnum[]
Any tips on making something like this work?
Edit: I do know about the Apache CircularFifoQueue, but I don't want to use it since its way more than I need and I'm concerned about package size.