包org.apache.commons.collections.buffer中的Java类CircularFifoBuffer是非泛型的,并且可以存储任何类的对象。将非泛型类扩展为泛型类
我想创建的这一个泛型版本,只能容纳类T的对象我首先想到的是扩展CircularFifoBuffer和简单的写一个新的“添加”方法:
public class CircularFifoQueue<T> extends CircularFifoBuffer {
public boolean add(T data) {
return super.add(data);
}
}
然而,这留下了旧的'add'方法,允许添加任意类的对象。有没有解决方法是使用继承而不是组合(这样我就不必重新实现CircularFifoBuffer的所有方法),但是阻止类的用户添加非T对象?
谢谢,这是我决定采用的解决方案。我也实施了'Queue'来访问这些方法。唯一的问题是,我希望'add(T t)'方法返回队列末尾的对象,而这似乎不可能在'Queue '接口的范围内。目前,我刚刚创建了一个新的方法'addAndRetrieve(T t)',它可以做我想做的事情,尽管我有兴趣听听其他解决方案。 –
2011-05-19 13:26:14
好的!我也希望CircularFifoQueue能够实现Queue。 – Miguel 2012-09-20 20:39:45