I have a POJO specified as: MyClass<U>
, where U
is the generic type parameter.
I am trying to write a utility method which accepts a class reference Class<T>
and populates a map of type Map<String, T>
(accepts the map to populate).
This method is implemented like:
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;
}
This compiles fine. In my caller, I attempt to populate a map with any MyClass
instance (irrespective of type) as the value. Hence I use the following code:
// Loses type information
Map<String, MyClass<?>> m = new HashMap<>();
populateMap(m, MyClass.class);
This does not compile. Compilation error:
The method
populate(Map<String,T>, Class<T>)
in the type ... is not applicable for the arguments(Map<String,MyClass<?>>, Class<MyClass>)
How can I fix this?