org.apache.commons.collections.buffer 包中的 Java 类 CircularFifoBuffer 是非泛型的,可以存储任何类的对象。
我想创建一个通用版本,它只能保存类 T 的对象。我的第一个想法是扩展 CircularFifoBuffer 并简单地编写一个新的“add”方法:
public class CircularFifoQueue<T> extends CircularFifoBuffer {
public boolean add(T data) {
return super.add(data);
}
}
然而,这保留了旧的“add”方法,允许添加任意类的对象。有没有办法解决这个问题,使用继承而不是组合(这样我就不必重新实现 CircularFifoBuffer 的所有方法),但阻止该类的用户添加非 T 对象?
一种想法是不实现自己的缓冲区,只包装原始缓冲区:
public class CircularFifoQueue<T> {
private CircularFifoBuffer buffer = new CircularFifoBuffer();
public boolean add(T data) {
return buffer.add(data);
}
// implement all other methods that are needed
}
所以内部缓冲区占据了一切,但包装器确保只T
可以添加类型对象。问题:现在缓冲区没有实现任何接口。所以它的使用现在有点有限(如果你需要发送一个,你就不能使用它Buffer
例如)
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)