Dlaczego nie można wstrzykiwać klas ogólnych? [Zamknięte]
Mam ogólną klasę abstrakcyjnego szablonu. Pomyślałem, że jeśli utworzę producentów specyficznych dla typu, mogę wstrzyknąć pewną usługę DAO bezpośrednio do klasy ogólnej. Ale nie mogę.
Czemu? A jak mogę to obejść?
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);
}
}
Kiedy wstrzykuję np. A@Inject MyDao<Customer> dao;
działa doskonale. Ale nie z generykami ...