私の IDE は、ここのコードの最後の行に問題があると言っています ( Cannot convert from Class<Ix> to Ix
)。どうすれば解決できますか?
ここでPackage
は、メソッドがパッケージが提供するタイプ (インターフェース) をprovides()
返すインターフェースです。Collection<Type>
m
タイプを提供する Package にタイプをマップします。
Manager's get()
要求されたタイプのものを返したいと思います。以下の例では、 classP1
は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?
}
}
このコードのアイデアはばかげているように思えます。しかし、私はまだ問題とその解決方法を理解したいと思っています。前もって感謝します!