一般的な抽象テンプレート クラスがあります。タイプ固有の Producer を作成すれば、DAO サービスをジェネリック クラスに直接注入できると考えました。しかし、私はできません。
なんで?そして、どうすればこれを回避できますか?
abstract class MyView<T> {
@Inject
MyDao<T> dao;
//some more template methods that make use of the dao
void someMethod() {
dao.use();
}
}
class CustomerView extends MyView<Customer> {
//javax.enterprise.inject.AmbiguousResolutionException: Ambigious resolution
}
class DaoManager {
@Produces
MyDao<Customer> getDaoCustomer() {
return DaoFactory.make(Customer.class);
}
@Produces
MyDao<Product> getDaoProduct() {
return DaoFactory.make(Product.class);
}
}
eg a を注入すると、@Inject MyDao<Customer> dao;
完全に機能します。しかし、ジェネリックではありません...