次のように指定された POJO があります。MyClass<U>
ここU
で、 はジェネリック型パラメーターです。クラス参照を受け入れ、Class<T>
タイプのマップを作成するユーティリティ メソッドを作成しようとしていますMap<String, T>
(作成するマップを受け入れます)。
このメソッドは次のように実装されます。
static void populateMap(Map<String, T> map, Class<T> type) {
...
// Parses into the specified type and returns an object of that type.
T obj = parse(..., type);
map.put (key, obj);
...
return map;
}
これはうまくコンパイルされます。私の呼び出し元では、MyClass
(タイプに関係なく) 任意のインスタンスを値としてマップに入力しようとしています。したがって、次のコードを使用します。
// Loses type information
Map<String, MyClass<?>> m = new HashMap<>();
populateMap(m, MyClass.class);
これはコンパイルされません。コンパイル エラー:
タイプ ...のメソッド
populate(Map<String,T>, Class<T>)
は引数に適用できません(Map<String,MyClass<?>>, Class<MyClass>)
どうすればこれを修正できますか?