我有一個通用的抽象模板類。我想如果我創建類型特定的生產者,我可以直接在泛型類中注入一些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);
}
}
當我注射例如@Inject MyDao<Customer> dao;
它完美的作品。但不能與仿製藥......
你的'DaoFactory'是如何實現的? –
請定義「不起作用」。另外,'@Inject MyDao dao;'不是通用的? –
不工作意味着拋出異常。當然MyDao在一定程度上是通用的。不過我想爲抽象方法注入完全通用的doa。不是定製的。 –
membersound