0

此代码在 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 接口。

4

2 回答 2

2

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

作为替代方案,有一个支持泛型的 Commons Collections 的分支Google 也有一个 Collections 库。不过,我还没有检查它们中的任何一个是否有缓冲区,它需要你切换 API。

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

可能只是坚持使用@SupressWarnings。

于 2009-04-16T00:51:19.677 回答
0

如上所述,您可以使用 Jakarta 集合的分支,这将为您提供一个使用泛型的缓冲区类,并且不会给您警告 http://collections.sourceforge.net/api/org/apache/commons/collections/Buffer。 html

于 2009-04-20T21:14:30.917 回答