1

HashMap値が のバリアントであるを正しくインスタンス化するにはどうすればよいですか。つまり、値はand/orList<Number>の形式を取ることができます。これが私がこれまでに試したことです:List<Long>List<Double>

HashMap<String, List<Number>> foo = new HashMap<String, List<Number>>();
foo.put("Tenticles", new ArrayList<Long>());

エラー メッセージ: The method put(String, List<Number>) ... is not applicable for the arguments (String, List<Long>)

Longまた、構成要素にa を追加できるようにしたいと考えてList<Long>いますDouble

編集Longこれらの回答は、 aまたは aDoubleを構成リストの1つに追加する方法を示していません

4

3 に答える 3

2

ワイルドカードを使用する

HashMap<String, List<? extends Number>> foo = new HashMap<String, List<? extends Number>>();
LinkedList<Long> list = new LinkedList<>();
list.add(10L);
foo.put("Tenticles", list);

オブジェクトListは のサブタイプである必要がありますNumber

于 2013-10-08T02:41:20.190 に答える