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 に答える