我有一个POJO指定为:MyClass<U>
,其中U
是泛型类型参数。 我正在尝试编写一个实用程序方法,它接受类参考Class<T>
并填充类型为Map<String, T>
(接受要填充的地图)的地图。Java泛型:如何为泛型类指定类类型?
实现此方法是这样的:
编译没有。在我的调用者中,我尝试使用任何MyClass
实例(不论类型)作为值填充地图。因此,我使用以下代码:
// Loses type information
Map<String, MyClass<?>> m = new HashMap<>();
populateMap(m, MyClass.class);
这不会编译。编辑错误:
The method
populate(Map<String,T>, Class<T>)
in the type ... is not applicable for the arguments(Map<String,MyClass<?>>, Class<MyClass>)
我该如何解决这个问题?
别你认为在声明地图的时候你需要实际的类型而不是泛型通配符? –
你应该在这个类型的地方使用T。你可以粘贴完整的课程吗? – Lokesh
@JunedAhsan不,我应该能够创建一个包含任何类型的MyClass实例的地图。这就是我指定通配符的原因。 – Neel