我有一个通用的抽象模板类。我想如果我创建特定类型的生产者,我可以直接在泛型类中注入一些 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);
}
}
当我注入例如 a@Inject MyDao<Customer> dao;
时,它工作得很好。但不是泛型...