我的 IDE 说这里的最后一行代码有问题 ( Cannot convert from Class<Ix> to Ix
)。如何解决?
这里,Package
是一个接口,该方法provides()
返回Collection<Type>
包提供的类型(接口)中的一个。
m
将类型映射到提供该类型的包。
我想Manager's get()
返回请求类型的东西。在下面的示例中,类P1
是一个Package
提供了一堆接口的类,包括Ix
. 我希望能够要求Manager
获取提供的包Ix
并将其作为Ix
.
public class Manager {
public HashMap<Type, Package> m = new HashMap<Type, Package>();
public void register(Package p) {
for(Type t : p.provides())
m.put(t, p);
}
@SuppressWarnings("unchecked")
public <T> T get(T t) {
return (T) m.get(t);
}
public static void main(String[] args) {
Manager manager = new Manager();
P1 p1 = new P1();
manager.register(p1);
Ix ix = manager.get(Ix.class);
// What do I need to change so that the method call returns p1 as an Ix?
}
}
我意识到这段代码中的想法似乎很愚蠢。但我仍然想了解这个问题以及如何解决它。提前致谢!