我有一个 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>)
我怎样才能解决这个问题?