¿Por qué es imposible inyectar clases genéricas? [cerrado]
Tengo una clase de plantilla abstracta genérica. Pensé que si creaba productores de tipo específico, podría inyectar algún servicio DAO directamente en la clase genérica. Pero no puedo.
¿Por qué? ¿Y cómo podría evitar esto?
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);
}
}
Cuando me inyecto, por ejemplo, un@Inject MyDao<Customer> dao;
funciona perfectamente Pero no con los genéricos ...