java - 将泛型与 Jakarta 公共(public)集合缓冲区一起使用

标签 java generics apache-commons-collection

此代码在 Java <= 1.4 中编译良好。 Java 1.6 的提示和警告:

“方法add(Object)属于原始类型Collection。对泛型类型Collection的引用应该参数化”

import org.apache.commons.collections.Buffer;
import org.apache.commons.collections.BufferUtils;
import org.apache.commons.collections.buffer.UnboundedFifoBuffer;

private Buffer connectqueue = BufferUtils.blockingBuffer(new UnboundedFifoBuffer());

...

connectqueue.add(new Conn(this, address, port));

如何调整代码以使该警告消失而不添加 @SupressWarnings 指令?

问题是 Jakarta Commons Collections Buffer 不是通用的,而是扩展了通用 java.util.Collection 接口(interface)。

最佳答案

你不能。在 Jakarta Commons 支持泛型之前(他们可能不会,因为他们也希望能够在较旧的 Java 版本上构建),您需要抑制(或接受)该警告。

作为替代方案,有 fork of Commons Collections that supports generics ,和Google also has a Collections library 。不过,我还没有检查它们是否有缓冲区,这需要您切换 API。

如果您的代码没有使用 1.4 后的语言功能,您可以将编译器的语言级别设置为“1.4”,但这似乎更不可行(或不可取)。

可能只是坚持使用@SupressWarnings。

关于java - 将泛型与 Jakarta 公共(public)集合缓冲区一起使用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/754339/

相关文章:

java - 关于java终止程序

Java - 实例化通用类型类

c# - 获取对通用对象<T> 的引用

java - 线程行为

java - 无法从 START_OBJECT token 中反序列化 `java.lang.Boolean` 的实例

java - 嵌套 for 循环时间复杂度

c# - 将 datarow[] 转换为 List<int> 的最佳方法是什么?

Java 随机访问映射

java - apache-commons collectionutils 源代码

java - 如何区分 2 个 ArrayList