11

以下のようにオブジェクトを作成しようとすると:

Map<Integer, Map<String, Integer>> myMap = new HashMap<Integer, HashMap<String, Integer>>();

構文的に何が間違っていますか、誰かが私を説明できますか?

4

6 に答える 6

6

これを試して

Map<Integer, ? extends Map<String, Integer>> myMap = new HashMap<Integer, HashMap<String, Integer>>();

より簡単な例で説明する方が簡単です

Set<Number> set = new HashSet<Integer>();

Double を Integers の HashSet に追加できるため、許可されていません

set.add(1.0)

ご了承ください

Set<? extends Number> set = new HashSet<Integer>();

セット以外には何も追加できませんnull。ただし、数値のみを読み取ることができます

ここで詳細情報を見つけることができますhttp://docs.oracle.com/javase/tutorial/extra/generics/wildcards.html

于 2013-04-12T09:59:07.543 に答える
3

次のようなものが必要です。

Map<Integer, Map<String, Integer>> myMap = new HashMap<Integer, Map<String, Integer>>();
myMap.put(1, new HashMap<String, Integer>());
于 2013-04-12T09:58:56.697 に答える
2

これを試して:

Map<Integer, HashMap<String, Integer>> myMap = new HashMap<Integer, HashMap<String, Integer>>();
于 2013-04-12T09:58:29.943 に答える