此代码在 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/