我有一个名为A的接口,它扩展了另一个接口B
我有这段代码:
class myMap<T extends B> {
private Map<PluginTypes, T> map;
public myMap() {
map = new HashMap<PluginTypes, T>();
map.put(PluginTypes.ICustomPublishingNeedsService,
A.class);
}
}
我在put函数中遇到了这个编译器错误:
The method put(PluginTypes, T) in the type Map<PluginTypes,T> is not applicable for the arguments (PluginTypes, Class<A>)
我已经尝试过这个
private Map<PluginTypes, Class<T>> map2;
public myMap(int i) {
map2 = new HashMap<PluginTypes, Class<T>>();
map2.put(PluginTypes.ICustomPublishingNeedsService,
(Class<T>) ICustomPublishingNeeds.class);
}
它正在工作,但它不安全,我宁愿你更愿意帮助我在第一段代码中解决我的错误
答案 0 :(得分:0)
这是因为Class不扩展A或B
myMap<T extends B>
表示此参数的类型将是B
类型(或其子类之一)。你传递的是Class
。 Class
不会延长B.