5

次のように宣言された関数があります。

public synchronized void update(HashMap<String, Comparable> data)

データには文字列と整数が含まれていますが、Comparable は警告を出します

Comparable is a raw type. References to generic type Comparable<T> should be 
 parameterized

警告があまり見つからないので、質問は正しい方法があるかどうかです。警告を抑制したくありません。

少し早いですがお礼を!マーカス

4

2 に答える 2

3

これはコンパイラを喜ばせるはずです:

public synchronized void update(HashMap<String, Comparable<Object>> data)

ObjectStringとの両方の中で最も具体的なスーパータイプですInteger。また、コードには改善の余地があります。まず第一にMap、具体的なHashMap実装ではなく、インターフェースに依存します。Comparable次に、機能が本当に必要ない場合は、を使用しますMap<String, Object>。最後になりましたが、マルチタイプのコレクションは避け、強い型付けを好みます。

" [...]データには文字列とintが含まれています[...]String "-からへの単なるマップの場合Integer

public synchronized void update(HashMap<String, Integer> data)
于 2012-08-19T07:23:13.293 に答える
1

まず第一にHashMap、署名に a を主張するべきではありません。だけではないのはなぜMapですか?第 2 に、マップの値の型を実装する ものにできるようにする必要がありますComparable。3 番目に、Comparable無制限のワイルドカードを使用してそれ自体をパラメーター化できます。

void update(Map<String, ? extends Comparable<?>> data)

HashMap<String, Integer>これで、 、TreeMap<String, String>またはのいずれかで呼び出すことができますSortedMap<String, Comparable<?>>

于 2012-08-19T12:27:27.210 に答える