だから私は抽象的な実体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 である必要があります。この意味はCompoundTcompoundService.save(compound)compoundT
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>。
これを達成する方法はありますか?