だから私は抽象的な実体Compound
と抽象的なサービスを持っていますCompoundService<T extends Compound>
。
CompoundService<T extends Compound>
(任意の数、コンパイル時に実装が不明)の実装にアクセスする必要がある別のサービス クラスがあります。これは 1 つの特定のメソッドで必要であり、そのメソッドはクラス引数を取ることができますClass<? extends Compound>
。
問題は、このクラスを対応するサービス クラスに型安全にマップする方法です。
ワイルドカードではなく具体的Map<Class<? extends Compound>, CompoundService<? extends Compound>>
なジェネリックパラメーターが必要なため、次のようなものは機能しません。CompoundService
これを説明する方法がわかりません。ただし、 type のインスタンスをcompoundService.getById(compoundId)
返すか、 type である必要があります。この意味はCompound
T
compoundService.save(compound)
compound
T
Map<Class<? extends Compound>, CompoundService<? extends Compound>> services = //...;
CompoundService<T> compoundService = services.get(compoundClass);
CompoundService<? extends Compound>>
にキャストできないため、機能しません CompoundService<T>
。
うーん、それが役に立ったかどうかはわかりません。Class<? extends Compound>
問題は、この「タイプ」サービス クラスへの Class オブジェクトのマッピングですCompoundService<? extends Compound>
。
これを達成する方法はありますか?