1

HashMap クラスのソース コードを読んでいるときに、彼らが使用していることに気付きました (149 行目)

transient Entry<K,V>[] table;

そして、(283行目)で初期化します:

table = new Entry[capacity];

また、「未確認または安全でない操作」に関する警告も表示されません。

しかし、私が似たようなものを書こうとしたとき:

TestClass<T>{...
    LinkedList<T>[] arrayOfLists; ....
    arrayOfLists = new LinkedList[capacity]; //warning here

残念ながら、 @SuppressWarnings("unchecked") を使用することは私にとってオプションではありません...

LinkedList<String>[]...

それでも同じなので、私の質問は、私が見逃している違いと、警告を引き起こさないジェネリック コレクションの配列の良い解決策は何かということです。ところで、@SuppressWarnning は残念ながら私にとって選択肢ではありません。

4

1 に答える 1

1

Java コレクション API のコードは正常にコンパイルされません。警告も表示されます。JDK では、コンパイルされたコードを含む .class ファイル (または .jar) が既にあるため、警告は表示されません。

独自のコードの場合は、リンクされたリストのリストを使用してください。

TestClass<T> { ...
    List<LinkedList<T>> listOfLists; ...
    listOfLists = new ArrayList<LinkedList<T>>(capacity);
于 2013-03-24T01:16:43.653 に答える