gpt4 book ai didi

java - 将非泛型类扩展为泛型类

转载 作者:行者123 更新时间:2023-11-30 05:57:14 24 4
gpt4 key购买 nike

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 类型对象。问题:现在缓冲区没有实现任何接口(interface)。因此它的使用现在有点受限(例如,如果您需要发送 Buffer,则无法使用它)

关于java - 将非泛型类扩展为泛型类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6057826/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com