The Java class CircularFifoBuffer in the package org.apache.commons.collections.buffer is non-generic, and can store objects of any class.
I would like to create a generified version of this, that can only hold objects of class T. My first thought was to extend CircularFifoBuffer and simply write a new ‘add’ method:
public class CircularFifoQueue<T> extends CircularFifoBuffer {
public boolean add(T data) {
return super.add(data);
}
}
However, this leaves the old ‘add’ method in place, allowing for objects of arbitrary class to be added. Is there a way around this that uses inheritance rather than composition (so that I don’t have to re-implement all of CircularFifoBuffer’s methods) but prevents users of the class from adding non-T objects?
One idea is t implement your own buffer that just wraps the original one:
So the internal buffer takes everything but the wrapper makes sure that only
Ttype objects can be added. Problem: right now the buffer does not implement any interface. So it’s usage is a bit limited right now (you can’t use it if you need to send aBufferfor example)