Map
のキーの総称タイプはKey<T>
であり、値はList<T>
です。キーがKey<String>
のインスタンスの場合、値はList<String>
でなければならず、同じルールが他のキーと値のペアに適用されます。私は、次のことを試してみましたが、それはコンパイルされません:私はこれは悪いですが、私は現在、より良い選択を持っていない知っている変数ジェネリックで地図を宣言するにはどうすればいいですか?
Map<Object, List> map;
:現時点では
Map<T, List<T>> map;
が、私は「部分的」ジェネリックでそれを宣言する必要が。このような状況でジェネリック医薬品を使用することは可能ですか?
UPDATE
多分私は明らかに私の問題を発現しませんでした。 、
map.put(new Key<String>(), new ArrayList<Integer>());
をジェネリック型は、任意のものとすることができる一方で、キーと値が常に同じジェネリック型を持っている必要があります。
map.put(new Key<String>(), new ArrayList<String>());
map.put(new Key<Integer>(), new ArrayList<Integer>());
し、次のコードにコンパイルべきではない:私はすることができますマップが欲しいです明らかにマップを拡張しても私の要求は満たされません。
スペースは問題ではありません。それはおそらくそれが使用される方法です。 OPは修正するためにもっとコードを表示する必要があります。 – Nishant
タイプ「T」のキー、またはタイプ「Key」のキーを使用していますか? –
あなたの実際のシナリオでは、NishantとGeoffの答えにカプセル化を使用して問題を解決し、実際のコードに適応させるだけです。 –