此代码在Java< = 1.4中编译良好。带有警告的Java 1.6 bitches and moans:
“方法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接口。
答案 0 :(得分:2)
你做不到。在Jakarta Commons支持泛型之前(因为他们希望能够在较旧的Java版本上构建它们,因此他们不会这样做),你需要抑制(或接受)警告。
作为替代方案,有fork of Commons Collections that supports generics和Google also has a Collections library。我没有检查其中任何一个是否有缓冲区,并且它需要您切换API。
如果你的代码都没有使用1.4之后的语言功能,你可以将编译器的语言级别设置为“1.4”,但这似乎更不可行(或者更不可取)。
可能只是坚持@SupressWarnings。
答案 1 :(得分:0)
如上所述,你可以使用Jakarta集合的fork,它将为你提供一个使用泛型的缓冲类,并且不会给你警告 http://collections.sourceforge.net/api/org/apache/commons/collections/Buffer.html