インターフェースのために次のJava
メソッドを実装しています:
public String importDocument(ImportSource source, Map<String, ? extends Object> paramMap);
フォローしようとすると、コンパイルの警告が表示されます。スニペット:
paramMap.put("Key", "Value");
エラー:
タイプMapのメソッドput(String、capture#1-of?extends Object)は、引数(String、String)には適用されません
どうして?
_? extends Object
_
汎用ワイルドカードを使用しています。クラスタイプが決定的ではないため、追加操作を実行できません。何も追加/配置できません(nullを除く)。
ワイルドカードの使用の詳細については、Oracle docs を参照してください。
_Collection<?> c = new ArrayList<String>();
c.add(new Object()); // Compile time error
_
Cの要素タイプが何を表しているのかわからないため、オブジェクトを追加することはできません。 add()
メソッドは、コレクションの要素タイプである_type E
_の引数を取ります。実際の型パラメーターが_?
_の場合、一部の_unknown type
_を表します。追加するために渡すパラメーターは、この未知のタイプのサブタイプでなければなりません。どんな型なのかわからないので、何も渡すことはできません。_The sole exception is null, which is a member of every type
_。